📄 receivmsg.java
字号:
import java.net.*;
class ReceivMsg implements Runnable
{
private int localport;
private Thread t;
private boolean goon=true;
private Login login;
private SendMsg sm;
public ListCellInfo friendsvector=new ListCellInfo(); //好友列表
public ListCellInfo friendsvectorend=new ListCellInfo();
public int numoffriend=0; //好友个数
public int numofonline=0; //在线的好友个数
public GroupVector groupvector=new GroupVector(); //群列表
public GroupVector groupvectorend=new GroupVector();
public int numofgroup=0; //群个数
public ChatMsg chatmsg=new ChatMsg(); //收到的聊天消息
public ChatMsg chatmsgend=new ChatMsg();
public int numofchatmsg=0;
public ReceivMsg(SendMsg sm,Login login)
{
this.localport=login.local_port;
this.login=login;
this.sm=sm;
}
public void start()
{
t=new Thread(this);
t.start();
System.out.println("(Client)接收线程启动!");
}
public void stop()
{
goon=false;
System.out.println("(Client)接收线程停止!");
}
public void run()
{
while(goon)
{
receiv();
}
}
public void receiv()
{
DatagramSocket sockrev=null;
try
{
byte[]receivmsg=new byte[2048];
DatagramPacket packetreceiv=new DatagramPacket(receivmsg,receivmsg.length);
sockrev=new DatagramSocket(localport);
sockrev.receive(packetreceiv); //阻塞至服务器回应
String tempreceiv=new String(receivmsg,0,packetreceiv.getLength());
/*****
* 启动消息处理线程,把消息处理交给新线程,让接收线程继续接收数据包
*/
MsgProcess mp=new MsgProcess(tempreceiv,sm,login,this);
mp.start();
System.out.println("(Client)接收到一条消息:"+tempreceiv);
}
catch(Exception e)
{
e.printStackTrace();
if(sockrev!=null)
sockrev.close();
}
if(sockrev!=null)
sockrev.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -