• Java TCP网络编程


    目录

    一、TCP网络编程

    步骤:

    客户端:

    服务器端:

    综合例子:

    二、UDP编程



    一、TCP网络编程

    步骤:

    客户端:

    1.用自己的IP和端口号创建一个Socket对象

    Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),9090);

    2.获取一个输出流

    OutputStream os = socket.getOutputStream();

    3.进行数据写出

    服务器端:

    1.创建服务器端的ServerSocket,并指明自己的端口号

    ServerSocket serverSocket=new ServerSocket(9090);

    2.利用accept方法获取客户端的Scoket

    Socket accept = serverSocket.accept();

    3.获取一个输入流

    InputStream inputStream = accept.getInputStream();

    4.读入数据

    综合例子:

    功能:客户端将一份文件内容发送给服务端,服务端将文件保存在本地,并返回提示信息给客户端。

    1. package Network_programming;
    2. import org.junit.Test;
    3. import java.io.*;
    4. import java.net.InetAddress;
    5. import java.net.ServerSocket;
    6. import java.net.Socket;
    7. public class demo5 {
    8. @Test
    9. public void server() throws IOException {
    10. //创建服务器端的ServerSocket,指明自己的端口号
    11. ServerSocket serverSocket=new ServerSocket(9090);
    12. //获取客户端的Scoket
    13. Socket accept = serverSocket.accept();
    14. //创建一个输入流
    15. InputStream inputStream = accept.getInputStream();
    16. FileOutputStream fos=new FileOutputStream("D:\\Java develop\\Program\\superior_Java\\ingram5.jpg");
    17. //写出数据
    18. int len;
    19. byte[]arr=new byte[20];
    20. while ((len= inputStream.read(arr))!=-1){
    21. fos.write(arr,0,len);
    22. }
    23. //反馈给客户端的信息
    24. OutputStream os=accept.getOutputStream();
    25. os.write("你好,服务端已经收到".getBytes());
    26. fos.close();
    27. inputStream.close();
    28. accept.close();
    29. serverSocket.close();
    30. }
    31. @Test
    32. public void client() throws IOException {
    33. //创建Socket对象
    34. Socket socket=new Socket(InetAddress.getByName("127.0.0.1"),9090);
    35. //获取一个输出流
    36. OutputStream os = socket.getOutputStream();
    37. FileInputStream fis=new FileInputStream(new File("D:\\Java develop\\Program\\superior_Java\\ingram.jpg"));
    38. //写出数据
    39. int len;
    40. byte []arr=new byte[20];
    41. while ((len= fis.read(arr))!=-1){
    42. os.write(arr,0,len);
    43. }
    44. //关闭数据的输出,不然服务器端会一直等待,造成阻塞
    45. socket.shutdownOutput();
    46. InputStream is=socket.getInputStream();
    47. ByteArrayOutputStream bis=new ByteArrayOutputStream();
    48. int length;
    49. byte []buffer=new byte[20];
    50. while ((length=is.read(buffer))!=-1){
    51. bis.write(buffer,0,length);
    52. }
    53. System.out.println(bis.toString());
    54. //接收服务器端的反馈信息
    55. //资源关闭
    56. os.close();
    57. fis.close();
    58. os.close();
    59. socket.close();
    60. }
    61. }

    二、UDP编程

    采用包进行传输,不必握手。类似于发短信。

    1. package Network_programming;
    2. import org.junit.Test;
    3. import java.io.IOException;
    4. import java.net.*;
    5. //UDP网络编程
    6. public class demo7 {
    7. @Test
    8. public void sender() throws IOException {
    9. DatagramSocket socket=new DatagramSocket();
    10. String str="你好,英格拉姆,希望你能带领鹈鹕夺冠啊!";
    11. byte []data=str.getBytes();
    12. DatagramPacket packet=new DatagramPacket(data,0,data.length, InetAddress.getLocalHost(),9090);
    13. socket.send(packet);
    14. socket.close();
    15. }
    16. @Test
    17. public void receiver() throws IOException {
    18. DatagramSocket socket=new DatagramSocket(9090);
    19. byte []arr=new byte[100];
    20. DatagramPacket packet=new DatagramPacket(arr,0,arr.length);
    21. socket.receive(packet);
    22. System.out.println(new String(packet.getData(),0, packet.getLength()));
    23. socket.close();
    24. }
    25. }

  • 相关阅读:
    【生成二维码】
    java程序员未来学习规划(欢迎各位大佬提建议)
    一文带你玩转k0s
    Arduino驱动BMA220三轴加速度传感器(惯性测量传感器篇)
    最大的目标就是:进大厂
    10个Reduce函数的使用小技巧
    PHP —— CI 框架实现微信小程序支付
    SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.7 SpringBoot 操作 Redis 客户端实现技术切换【jedis】
    trie树(前缀树)
    【教学类-20-02】20221203《世界杯16强国旗-定量版》(大班)
  • 原文地址:https://blog.csdn.net/wangcheng_BI/article/details/127702952