首页 >> 大全

29 java网络编程

2023-06-22 大全 48 作者:考证青年

文章目录 2 UDP协议,可能数据丢失,适合小数据 结尾彩蛋

博主介绍

个人主页:

编程社区: 编程酒馆

个人格言: 想法落实的最佳时机就是现在!

如果你 喜欢交流或热爱分享,欢迎加入编程社区或交流群 大家一起学习技术,交流心得,共同进步

1 TCP协议,三次握手,安全但是比较慢,适合传送大量数据 1.1 ️TCP编程用到的类 (1)类

类带有很多方法,主要的方法作一个讲解:

方法说明

获取本机对象

根据指定主机名/域名获取ip地址对象

获取对象的主机名

获取对象地址

(2)(插座) 使用步骤

服务端:

①创建 对象,指定端口

②的方法会返回一个对象;【在服务器端获得插座】

③对象提供了()方法和()方法会返回字符流

客户端:

①创建对象,指定服务器ip地址和端口

②通过提供的方法,获得IO流进行相关操作

【注意: 发送完一次数据需要用,提供的()方法告诉对象已经发送完毕,最后要关闭和IO流】

端代码示例

public class serverDemo {public static void main(String[] args) throws IOException {
//        创建ServerSocket对象ServerSocket serverSocket = new ServerSocket(9999);System.out.println("服务器端口9999等待连接。。。");
//        获取Socket对象Socket socket = serverSocket.accept();InputStream inputStream  = socket.getInputStream();byte [] buffer = new byte[1024];int leng = 0;while ((leng = inputStream.read(buffer)) != -1){System.out.print(new String(buffer,0,leng));}System.out.println();//        回应数据OutputStream outputStream = socket.getOutputStream();byte  [] bufferser = "你好client".getBytes();outputStream.write(bufferser);socket.shutdownOutput();System.out.println("server回应完毕");socket.close();inputStream.close();outputStream.close();}}

端代码示例:

public class ClientDemo {public static void main(String[] args) throws IOException {
//        创建Socket对象,连接服务器Socket socket = new Socket("127.0.0.1",9999);OutputStream outputStream = socket.getOutputStream();byte  [] buffer = "你好server".getBytes();
//        发送数据outputStream.write(buffer);
//        告诉对方发送完毕,否则会阻塞socket.shutdownOutput();System.out.println("client 第一次发送完毕");
//        获取回应InputStream inputStream  = socket.getInputStream();byte [] bufferclient = new byte[1024];int leng = 0;while ((leng = inputStream.read(bufferclient)) != -1){System.out.print(new String(bufferclient,0,leng));}System.out.println();socket.close();inputStream.close();outputStream.close();System.out.println("收到!退出");}
}

2 UDP协议,可能数据丢失,适合小数据 ️类和类实现了UDP协议;

UDP编程没有明确的服务端和客户端;

send端代码示例

public class SendDemo {public static void main(String[] args) throws IOException {
//        创建DatagramSocket对象,用于接收发送,端口9988用于接收DatagramSocket datagramSocket = new DatagramSocket(9988);byte [] sendBuffer = new byte[1024];sendBuffer = "四大名著是啥1?".getBytes();
//        打包数据DatagramPacket sendpacket = new DatagramPacket(sendBuffer, sendBuffer.length, InetAddress.getByName("127.0.0.1"), 9999);datagramSocket.send(sendpacket);System.out.println("提问完毕!");
//        接收回答byte [] daan = new byte[1024];DatagramPacket danpacket = new DatagramPacket(daan, daan.length);datagramSocket.receive(danpacket);
//        拆包int daleng = danpacket.getLength();byte [] danfu = danpacket.getData();System.out.println("回答:"+new String(danfu,0,daleng));datagramSocket.close();System.out.println("send端对话结束");}
}

端代码示例:

public class ReceiveDemo {public static void main(String[] args) throws IOException {
//        创建DatagramSocket对象,用于发送接受,9999端口等待接收DatagramSocket datagramSocket = new DatagramSocket(9999);
//        接收数据byte [] reciveBuffer = new byte[1024];DatagramPacket recdatagramPacket = new DatagramPacket(reciveBuffer,reciveBuffer.length);datagramSocket.receive(recdatagramPacket);
//        拆包int leng = recdatagramPacket.getLength();byte huixin [] = recdatagramPacket.getData();String str = new String(huixin,0,leng);if ("四大名著是啥?".equals(str)){byte h1 [] = "三国、水浒、红楼、西游".getBytes();DatagramPacket packet = new DatagramPacket(h1, h1.length, InetAddress.getByName("127.0.0.1"), 9988);datagramSocket.send(packet);}else {byte h1 [] = "what?".getBytes();DatagramPacket packet = new DatagramPacket(h1, h1.length, InetAddress.getByName("127.0.0.1"), 9988);datagramSocket.send(packet);}datagramSocket.close();System.out.println("receive端结束对话!");}
}

结尾彩蛋

认真分享技术,记录学习点滴若内容对你有用可以鼓励一下方式如下

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了