首页 > 编程语言 > 详细

java 网络编程 基于UDP协议的通信

时间:2018-08-14 21:35:44      阅读:144      评论:0      收藏:0      [点我收藏+]

 使用UDP协议,写一个能在同一界面发送消息,并显示消息的聊天软件。

代码实现如下:

             

                 

package com.abel.socket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/*
* 多线程在一个界面同时完成发送接收

* 1 发送send
* ***创建DatagramSocket,随机端口号
* 创建DatagramPacket,指定数据,长度,地址,端口
* 使用DatagramSocket发送DatagramPacket
* 关闭DatagramSocket

*2 接收 Receive
* 创建DatagramSocket,指定端口号
* 创建DatagramPacket,指定字节数组 长度
* 使用DatagramSocket接收DatagramPacket
* 关闭DatagramSocket
* 从DatagramPacket中获取数据


*/
public class Demo3_MoreThread {

public static void main(String[] args) throws InterruptedException {
new Receive().start();
Thread.sleep(10);
new Send().start();

}

}
class Receive extends Thread{
public void run() {
try {
DatagramSocket socket= new DatagramSocket(3321);
while(true) {
DatagramPacket packet=new DatagramPacket(new byte[1024], 1024);
socket.receive(packet);
byte[]arr=packet.getData();
int len=packet.getLength();
String ip=packet.getAddress().getHostAddress();//获取ip地址
int port=packet.getPort();//获取端口号
System.out.println(ip+":"+port+":"+new String(arr,0,len));
}
}
catch(IOException e) {
e.printStackTrace();
}
}
}
class Send extends Thread{
public void run() {
try {
Scanner sc=new Scanner(System.in);
DatagramSocket socket=new DatagramSocket();
while(true) {
String str=sc.nextLine();
if("quit".equals(str)) {
break;
}
DatagramPacket packet=new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 3321);
socket.send(packet);
}
socket.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
}

java 网络编程 基于UDP协议的通信

原文:https://www.cnblogs.com/abel111/p/9477900.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!