程序大概如下:
byte[] udppack_buf=new byte[34567];
byte[] temBuf = new byte[34567];
socket_udp=new DatagramSocket(udp_port);
DatagramPacket udp_packet=new DatagramPacket(udppack_buf,udppack_buf.length);
try{
for(int i=0;i<10;i++){
System.out.println("i= "+i);
socket_udp.receive(udp_packet);
temBuf=udp_packet.getData();当发送端C语言发送了比如10个数据包之后,在本机用sniffer监控发现本机的网卡确实收到了10个udp的包
,但是这个程序确只能接收到9个数据包,等到第10个的时候就发生阻塞,等待接收第10个数据包
如果这个时候发送端发送20个数据包,也是在第10个的时候出现问题,请高手指教!
byte[] udppack_buf=new byte[34567];
byte[] temBuf = new byte[34567];
socket_udp=new DatagramSocket(udp_port);
DatagramPacket udp_packet=new DatagramPacket(udppack_buf,udppack_buf.length);
try{
for(int i=0;i<10;i++){
System.out.println("i= "+i);
socket_udp.receive(udp_packet);
temBuf=udp_packet.getData();当发送端C语言发送了比如10个数据包之后,在本机用sniffer监控发现本机的网卡确实收到了10个udp的包
,但是这个程序确只能接收到9个数据包,等到第10个的时候就发生阻塞,等待接收第10个数据包
如果这个时候发送端发送20个数据包,也是在第10个的时候出现问题,请高手指教!
如何清空这个udppack_buf?
请参考。
//s.java
import java.net.*;
public class s
{
public static void main(String arg[]) throws Exception
{
String hw = "Hello World!";
byte[] udppack_buf=hw.getBytes("8859_1");
DatagramSocket socket_udp;
socket_udp=new DatagramSocket();
socket_udp.connect(InetAddress.getByName("localhost"),5555);
DatagramPacket udp_packet=new DatagramPacket(udppack_buf,udppack_buf.length);
try
{
for(int i=0;i<20;i++)
{
System.out.println("i= "+i);
socket_udp.send(udp_packet);
}
}catch(Exception e)
{
System.out.println(e);
}
}}
class r
{
public static void main(String arg[]) throws Exception
{
byte[] udppack_buf=new byte[34567];
byte[] temBuf;
DatagramSocket socket_udp;
socket_udp=new DatagramSocket(5555);
DatagramPacket udp_packet=new DatagramPacket(udppack_buf,udppack_buf.length);
try
{
for(int i=0;i<10;i++)
{
System.out.print("i= "+i+":");
for(int j=0;j<34567;j++)
udppack_buf[i] = 0;
socket_udp.receive(udp_packet);
temBuf=udp_packet.getData();
System.out.print(temBuf.length);
for(int j=0;j<34567;j++)
if(temBuf[j] == 0)
{
System.out.println(new String(temBuf,0,j));
break;
}
}
}catch(Exception e)
{
System.out.println(e);
}
}
}
C:\Documents and Settings\Administrator\My Documents>java s
i= 0
i= 1
i= 2
i= 3
i= 4
i= 5
i= 6
i= 7
i= 8
i= 9
i= 10
i= 11
i= 12
i= 13
i= 14
i= 15
i= 16
i= 17
i= 18
i= 19
//运行java r的结果
i= 0:34567Hello World!
i= 1:34567Hello World!
i= 2:34567Hello World!
i= 3:34567Hello World!
i= 4:34567Hello World!
i= 5:34567Hello World!
i= 6:34567Hello World!
i= 7:34567Hello World!
i= 8:34567Hello World!
i= 9:34567Hello World!