Java TCP/UDP网络编程

拼搏现实的明天。 2024-04-01 15:00 236阅读 0赞

目录

一、TCP网络编程

步骤:

客户端:

服务器端:

综合例子:

二、UDP编程



一、TCP网络编程

步骤:

客户端:

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

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

2.获取一个输出流

  1. OutputStream os = socket.getOutputStream();

3.进行数据写出

服务器端:

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

  1. ServerSocket serverSocket=new ServerSocket(9090);

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

  1. Socket accept = serverSocket.accept();

3.获取一个输入流

  1. 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. }

发表评论

表情:
评论列表 (有 0 条评论,236人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java网络编程

    1.要想实现网络传输,需要考虑的问题有哪些?    1.1 如何才能准确的定位网络上的一台主机?    1.2 如何才能进行可靠的、高效的数据传输? 2.jav

    相关 JAVA 网络编程

    网络编程 1.基本概念 1)TCP/IP协议 tcp是指传输控制协议 ip是指网络地址协议 TCP/IP协议族按层次分别分为以下四层:应用层、传输层、

    相关 Java 网络编程

    网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可...