我现在先做的是自发自收,可是接收时候总是只执行第一次,不知道是什么问题。
接收我是直接重写了run方法
public void run()
{
while(true)
{
try
{
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
DatagramSocket s1 = new DatagramSocket(8888);
System.out.print("receiving...");
s1.receive(packet);
int len = packet.getLength();
String msg = new String(buffer,0,len);
System.out.println(msg);
this.run();
}
catch(ConnectException connExc)
{
System.err.print("connect error");
}
catch(IOException e)
{
}
}
}
main函数里我是这么写的
ReceiveMsg rm = new ReceiveMsg();
rm.start();
rm.SendMsg();
不知道是不是因为我没理解多线程还是其他的错误。他就是只接收一次,望各位高手帮忙看下,谢谢~
接收我是直接重写了run方法
public void run()
{
while(true)
{
try
{
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
DatagramSocket s1 = new DatagramSocket(8888);
System.out.print("receiving...");
s1.receive(packet);
int len = packet.getLength();
String msg = new String(buffer,0,len);
System.out.println(msg);
this.run();
}
catch(ConnectException connExc)
{
System.err.print("connect error");
}
catch(IOException e)
{
}
}
}
main函数里我是这么写的
ReceiveMsg rm = new ReceiveMsg();
rm.start();
rm.SendMsg();
不知道是不是因为我没理解多线程还是其他的错误。他就是只接收一次,望各位高手帮忙看下,谢谢~
import java.io.*;public class Chat
{
public static void main(String[] arg) throws Exception
{
ReceiveMsg rm = new ReceiveMsg();
rm.start();
rm.SendMsg();
}
}class ReceiveMsg extends Thread
{
public void run()
{
while(true)
{
try
{
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
DatagramSocket s1 = new DatagramSocket(8888);
System.out.print("receiving...");
s1.receive(packet);
int len = packet.getLength();
String msg = new String(buffer,0,len);
System.out.println(msg);
this.run();
}
catch(ConnectException connExc)
{
System.err.print("connect error");
}
catch(IOException e)
{
}
}
} public void SendMsg()
{
send();
}
public String beginS()
{
String s="";
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br =new BufferedReader(isr);
try
{
s = br.readLine();
}
catch(IOException e)
{
e.printStackTrace();
}
return s;
}
public void send()
{
InetSocketAddress addr = new InetSocketAddress("127.0.0.1",8888);
System.out.print("sending...");
try
{
while(true)
{
byte[] data = beginS().getBytes();
DatagramPacket packet = new DatagramPacket(data,0,data.length,addr);
DatagramSocket sk = new DatagramSocket();
sk.send(packet);
SendMsg();
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
import java.io.*;public class Chat
{
public static void main(String[] arg) throws Exception
{
ReceiveMsg rm = new ReceiveMsg();
rm.start();
rm.SendMsg();
}
}class ReceiveMsg extends Thread
{
public void run()
{
try
{
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,buffer.length); DatagramSocket s1 = new DatagramSocket(8888);
while(true){System.out.print("\nreceiving...");s1.receive(packet);int len = packet.getLength();String msg = new String(buffer,0,len);System.out.println("\n receiving :"+msg);//this.run();
continue;}
}
catch(ConnectException connExc)
{
System.err.print("connect error");
}
catch(IOException e)
{
System.out.print(e.getMessage());
}
}
public void SendMsg()
{
send();
}
public String beginS()
{
String s="";
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br =new BufferedReader(isr);
try
{
s = br.readLine();
}
catch(IOException e)
{
e.printStackTrace();
}
return s;
}
public void send()
{
InetSocketAddress addr = new InetSocketAddress("127.0.0.1",8888);
System.out.print("sending...");
try
{
while(true)
{
byte[] data = beginS().getBytes();DatagramPacket packet = new DatagramPacket(data,0,data.length,addr);
DatagramSocket sk = new DatagramSocket();
sk.send(packet);
SendMsg();
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
}