当前位置:编程学习 > JAVA >>

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里面基本就行了。。自己尝试着简单改改吧。 --------------------编程问答--------------------
引用 1 楼 AA5279AA 的回复:
发个以前学的时候留下的例子吧,现在重新写是没那时间,不会的引用一下然后问。
客户端


Java code
?



123456789101112131415161718192021222324252627282930313233343536373839404142434445

package com.briup.ch12;   import java.net.Datag……

没有实现多线程,不过受教了。
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,