java socket 通信问题 高手请进

mrelay 2004-06-24 08:31:43
我现在要用java 做一个通信服务器,tcp 方式的,多线程的,用的是BufferedReader 来接收消息的, 刚开始通信还行,但是运行一段时间以后,发现BufferedReader 的 readline 函数不能阻塞了,也接受不到消息了,这是什么原因?还有, 程序里边有个定时器,但是,到了后来,好像也产生不了定时消息了。这是什么原因呀?
...全文
155 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hl_longman 2004-06-25
  • 打赏
  • 举报
回复
UP&GZ
mrelay 2004-06-25
  • 打赏
  • 举报
回复
部分代码 如下 先谢谢各位了。

class CdClientThread extends Thread {

public CdClientThread(Socket socketClient, ServerFrame Frame ,int ClientType){


// 如果客户端类型是java
if(m_iClientType == CdConstVarDef.JAVA_CLIENT)
{
//从客户端套接字中取得客户端的I/O对象
m_oJavaReader = new ObjectInputStream(m_socketClient.getInputStream());
m_oJavaWriter = new ObjectOutputStream(m_socketClient.getOutputStream());
}
}

//如果客户端类型是Vc
else
{
//从客户端套接字中取得客户端的I/O对象
m_oVcWriter = new PrintStream(m_socketClient.getOutputStream());
m_oVcReader = new BufferedReader(new InputStreamReader(m_socketClient.getInputStream()));
}

}

m_MyTimer = new Timer();
//设置定时器 1秒
}

/**
* 用来发送消息的函数
* @param message
* @return
*/
private int send(CdMessage msg)
{
if(m_iConnect < CdConstVarDef.DISCONNECT_TIME )
{
if(m_iClientType == CdConstVarDef.JAVA_CLIENT)
{
m_oJavaWriter.writeObject(msg);
}
else
{
m_oVcWriter.println(msg.m_String);
}
}
return 1;
}

public void run() {

m_MyTimer.schedule(new TimerTask() {
public void run() {
扫描发送队列,调用send 发送消息;
}
},100,100);

while (没有关闭连接) {
try {
if(m_iClientType == CdConstVarDef.JAVA_CLIENT)
{
try {
Object rev = m_oJavaReader.readObject();
if (rev != null) {
处理消息
}
}
}
}

//客户端是vc客户端
else
{
try {
String revMsg = m_oVcReader.readLine();
处理消息;

}

}
this.close();
this.notify(0,getClientName());
}

public int close()
{
if (m_MyTimer != null) {
m_MyTimer.stop();
}


this.m_socketClient.close();
this.m_oJavaReader.close();
this.m_socketClient.close();
}
}
bin1982 2004-06-25
  • 打赏
  • 举报
回复
好了就好,恭喜
mrelay 2004-06-25
  • 打赏
  • 举报
回复
搞定了。是因为界面显示占用CPU资源,使CPU的占用率达到了100% 不能够处理各个客户端发送过来的消息。 我错误的以为是readlin不能够阻塞了。
happyegg 2004-06-24
  • 打赏
  • 举报
回复
是不是已经退出循环终止线程了,看看有没有抛exception
chenzhoulei 2004-06-24
  • 打赏
  • 举报
回复
把代码放出来啊

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧