JAVA UDP网络编程
基于UDP的简单聊天程序的设计思想:可以用一个Socket服务实现数据的收发,用到多线程技术,开启两个线程一个用于接受数据,一个用于发送数据?这个我没理解清楚,求教。最好有例子解释。 java 网络 多线程 socket 聊天 --------------------编程问答-------------------- 发个以前学的时候留下的例子吧,现在重新写是没那时间,不会的引用一下然后问。客户端
package com.briup.ch12;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
public class UDPClient {
public static void main(String[] args){
DatagramSocket socket = null;
DatagramPacket sendPacket = null;
DatagramPacket receivePacket = null;
try{
// 1,创建DatagramSocket
socket = new DatagramSocket();
// 2,创建发送用的packet
byte[] buff =
"please give me your time :"
.getBytes("UTF-8");
sendPacket = new DatagramPacket
(buff,buff.length,
new InetSocketAddress(
"localhost",9900));
// 3,利用socket以及DatagramPacket发送数据
socket.send(sendPacket);
// 4,创建接收用的packet
byte[] buffRe = new byte[20];
receivePacket =
new DatagramPacket(buffRe,buffRe.length);
//5,利用socket以及DatagramPacket接收数据
socket.receive(receivePacket);
System.out.println(new String(buffRe));
}catch(Exception e){
e.printStackTrace();
}finally{
try{
// 6,关闭socket
if(socket!=null)socket.close();
}catch(Exception e){}
}
}
}
服务端:
package com.briup.ch12;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.util.Date;
public class UDPServer {
public static void main(String[] args){
DatagramSocket socket = null;
DatagramPacket sendPacket = null;
DatagramPacket receivePacket = null;
try{
// 1,创建DatagramSocket
socket = new DatagramSocket(9900);
while(true){
// 2,创建接收用的packet
byte[] buffRe = new byte[40];
receivePacket =
new DatagramPacket(buffRe,buffRe.length);
//3,利用socket以及DatagramPacket接收数据
socket.receive(receivePacket);
System.out.println(new String(buffRe));
// 4,创建发送用的packet
byte[] buff =
new Date().toString()
.getBytes();
// 5, 获得客户端的信息,并包装
sendPacket = new DatagramPacket
(buff,buff.length,
receivePacket.getSocketAddress());
// 6,利用socket以及DatagramPacket发送数据
socket.send(sendPacket);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
--------------------编程问答-------------------- 好像没有实现多线程,你把服务端的代码添加到run里面基本就行了。。自己尝试着简单改改吧。 --------------------编程问答--------------------
没有实现多线程,不过受教了。
补充:Java , Java相关