(UDP)循环输入聊天
来源:互联网 发布:电脑报 淘宝 编辑:程序博客网 时间:2024/05/13 01:49
1 . 实现聊天功能,发送端发送消息,接收端接收,然后回复消息,刚才第一次发送数据的发送端再接收.
2 . 其实也没有真正的发送端接收端,只是相对另一端说.
3 . 当接收到数据,该回复的时候,创建一个Datagrampacket,这个构造参数的 packet.getAddress(), packet.getPort()的地址和端口要get一下.UDP是面向无连接的,所以发送数据时的packet对象创建的时候要指定要发送的地址和端口号,回复的packet对象创建的时候也要指定要发送的地址和端口号.接收端和发送端都在同一个电脑上,只需要get端口号就行,而且每次get到的端口号都不一样.
发送端:
package test;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;import java.util.Scanner;/** * UDP循环输入聊天 */public class Test { public static void main(String[] args) { //创建socket DatagramSocket socket = null; try { socket = new DatagramSocket(); Scanner scanner = new Scanner(System.in); while(true){ //输入数据 String string = scanner.next(); //创建包 //InetAddress.getLocalHost()为接收端的地址,也就是本机 DatagramPacket packet = new DatagramPacket(string.getBytes(), string.getBytes().length, InetAddress.getLocalHost(), 6677); //发送数据 socket.send(packet); //接收 byte[] bs = new byte[1024]; DatagramPacket packet2 = new DatagramPacket(bs,bs.length); socket.receive(packet2); String string2 = new String(packet2.getData(),0,packet2.getLength()); System.out.println("接收端发送来:"+string2); } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(socket!=null){ socket.close(); } } }}
接收端:
package test;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.util.Scanner;public class Recive { public static void main(String[] args) { DatagramSocket socket = null; try { //创建socket socket = new DatagramSocket(6677); while(true){ byte[] bs = new byte[1024]; DatagramPacket packet = new DatagramPacket(bs,bs.length); socket.receive(packet); String string = new String(packet.getData(),0,packet.getLength()); System.out.println("发送来:"+string); //回复 Scanner scanner = new Scanner(System.in); String string2 = scanner.next(); DatagramPacket packet2 = new DatagramPacket(string2.getBytes(),string2.getBytes().length,packet.getAddress(),packet.getPort()); socket.send(packet2); } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
总结:
* 发送方: socket 没有参数的
* 接收方 : socket 是有端口号
* send 的 packet 是带有 byte lenth InetAddress port
* receive的 packet 是带有 byte lenth
阅读全文
0 0
- (UDP)循环输入聊天
- UDp键盘聊天输入
- UDP聊天
- UDP-聊天
- UDP聊天程序
- 编UDP聊天
- udp聊天小程序
- UDP聊天程序补充
- UDP聊天程序
- udp局域网聊天
- UDP 聊天测试程序
- Java.聊天系统.UDP
- c#UDP聊天
- UDP聊天 网关原理
- 简单UDP聊天模型
- UDP实现聊天
- Java UDP聊天程序
- 局域网聊天(UDP)
- SDUT:找朋友 BFS&&DFS
- 基于websocket和swoole的简易聊天室
- linux编辑文件时显示行号
- 【JavaSE学习笔记】网络编程_UDP协议,TCP协议
- [排序] 归并排序(Python)
- (UDP)循环输入聊天
- 互联网+时代,智慧停车如何改变城市“停车难”现状?
- JAVA多线程之wait/notify
- 贪心算法
- 表达式·表达式树·表达式求值
- 过滤器实现单一用户登录
- 【Python】欧氏距离和余弦距离
- 2017/8/23
- dell r730 xd 安装vmware esxi 5.5 u1