
我自己写的代码:
import javaioIOException;import javanetDatagramPacket;
import javanetDatagramSocket;
import javanetInetAddress;
import javanetSocketException;
import javanetUnknownHostException;
public class UdpRecvDemo
{
public static void main(String[] args) throws IOException
{
Recv();
}
public static void Recv() throws IOException
{
Systemoutprintln("接受开始");
DatagramSocket ds = new DatagramSocket(3388);
while(true)
{
byte[]buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buflength);
dsreceive(dp);
Systemoutprintln(ds);
String ip = dpgetAddress()getHostAddress();
int port = dpgetPort();
String text = new String(dpgetData(),0,dpgetLength());
if(textequals("exit"))
{
Systemoutprintln(ip+"退出会话");
break;
}
Systemoutprintln(ip+":"+port+"===>me "+text);
}
dsclose();
}
}使用socket编程即可。 1、网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等 *** 作都是通过该Socket实现的。 2udp是数据报协议,一次发送只要不超过65535字节(一般为6000字节以下才能发送成功),协议栈就加上udp头一次发送,当然IP层会分片。但接收端肯定是一次收到或者没收到,而不是分为两次或多次收到。你可以用select,epoll这些多路IO就知道,它只会通知一次。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)