社区
Java SE
帖子详情
java socket 通信问题 高手请进
mrelay
2004-06-24 08:31:43
我现在要用java 做一个通信服务器,tcp 方式的,多线程的,用的是BufferedReader 来接收消息的, 刚开始通信还行,但是运行一段时间以后,发现BufferedReader 的 readline 函数不能阻塞了,也接受不到消息了,这是什么原因?还有, 程序里边有个定时器,但是,到了后来,好像也产生不了定时消息了。这是什么原因呀?
...全文
155
6
打赏
收藏
java socket 通信问题 高手请进
我现在要用java 做一个通信服务器,tcp 方式的,多线程的,用的是BufferedReader 来接收消息的, 刚开始通信还行,但是运行一段时间以后,发现BufferedReader 的 readline 函数不能阻塞了,也接受不到消息了,这是什么原因?还有, 程序里边有个定时器,但是,到了后来,好像也产生不了定时消息了。这是什么原因呀?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
把代码放出来啊
java
源码包---
java
源码 大量 实例
Java
Socket
聊天
通信
演示代码 2个目标文件,一个服务器,一个客户端。
Java
Telnet客户端实例源码 一个目标文件,演示
Socket
的使用。
Java
组播组中发送和接受数据实例 3个目标文件。
Java
读写文本文件的示例...
java
源码包3
Java
Socket
聊天
通信
演示代码 2个目标文件,一个服务器,一个客户端。
Java
Telnet客户端实例源码 一个目标文件,演示
Socket
的使用。
Java
组播组中发送和接受数据实例 3个目标文件。
Java
读写文本文件的示例...
java
源码包2
Java
Socket
聊天
通信
演示代码 2个目标文件,一个服务器,一个客户端。
Java
Telnet客户端实例源码 一个目标文件,演示
Socket
的使用。
Java
组播组中发送和接受数据实例 3个目标文件。
Java
读写文本文件的示例...
java
源码包4
Java
Socket
聊天
通信
演示代码 2个目标文件,一个服务器,一个客户端。
Java
Telnet客户端实例源码 一个目标文件,演示
Socket
的使用。
Java
组播组中发送和接受数据实例 3个目标文件。
Java
读写文本文件的示例...
【
JAVA
实战】用
socket
通信
编程制作多人聊天室
在七个层级关系中,我们讲的
socket
属于传输层,其中UDP是⼀种⾯向⽆连接的传输层协议。...在这⾥我们不进⾏详细讨论,这⾥主要讲解的是基于TCP/IP协议下的
socket
通信
。
socket
是基于应⽤服务与TC............
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章