网络编程Socket

来源:互联网 发布:横道图用什么软件编制 编辑:程序博客网 时间:2024/05/22 08:14

Java Socket

概念

  1. 端口:确定应用程序
  2. IP:确定电脑主机
  3. udp:无连接(接收端没开启,发送端发送数据,会丢包)
  4. 一个包最大64k,字节数组长度最大是64*1024
  5. tcp传输分客户端和服务端

udp发送端代码写法

//创建udp服务,通过DatagramSocket创建对象DatagramSocket ds = new DatagramSocket();//确定数据,并封装成数据包byte[] buf = "Hello".getBytes();DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000);//通过Socket服务,把已有的数据包发送出去ds.send(dp);//关闭资源ds.close();

udp接收端代码写法

//创建udp服务,接受应用程序开启10000端口监听DatagramSocket ds = new DatagramSocket(10000);//接收应用程序开启10000端口监听//创建数据包byte[] buf = new byte[1024];//用buf数组存储接收到的数据DatagramPacket dp = new DatagramPacket(buf,buf.length);//接收数据包ds.receive(dp);//阻塞式方法//获取数据包的信息String ip = dp.getAddress().getHostAddress();String data = new String(dp.getData(),0,dp.getLength());int port = dp.getport();System.out.println(ip+"::"+data+"::"+port);//关闭资源ds.close();//一般不关,一直挂机,再配合while(true)

tcp客户端代码写法

//创建Socket服务,并指定要连接的主机和端口Socket s = new Socket("127.0.0.1",10002);//获取socket流中的输出流OutputStream os = s.getOutputStream();//发送数据os.write("Hello".getBytes());//读取来自服务端的反馈信息InputStream is = s.getInputStream();byte[] buf = new byte[1024];int len = is.read(buf);system.out.println(new String(buf,0,len));//关闭客户端s.close();

tcp服务端代码写法

//创建ServerSocket服务,并监听一个端口ServerSocket ss = new ServerSocket(10002);//通过accept方法获取客户端对象Socket s = ss.accept();String ip = s.getInetAddress().getHostAddess();//使用客户端对象的读取流获取发送过来的数据InputStream is = s.getInputStream();byte[] buf = new byte[1024];int len = is.read(buf);system.out.println(new String(buf,0,len));//反馈信息给客户端OutputStream os = ss.getOutputStream();os.write("Yes,I get!".getBytes);//关闭服务端(一般只关客户端,不关服务端)s.close();ss.close();
原创粉丝点击