记录socket问题

killboss12 2012-10-26 05:20:14
private void initSocket(){
InetAddress addr = null;
try {
addr = InetAddress.getLocalHost();
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

log.info("ip = " + addr.getHostAddress().toString());

linkList = new LinkedList();

new Thread(new Runnable() {
@Override
public void run() {
try {

// 统计客户端总数
int clientCount = 0;
//是否对客户端进行监听
boolean listening = true;

int fileprot;
try{
fileprot = Integer.parseInt(Util.getFileIO("prot"));
}catch(Exception ex){
log.error("读取配置端口配置文件错误");

fileprot = port;
}


try {
//创建端口4899的监听对象,监听客户请求
server = new ServerSocket(fileprot);

} catch (Exception e) {
// System.out.println("Can not listen to. " + e);
log.error("不能监听此端口" + e);
}


while (listening) {
//客户端计数
clientCount++;

//监听到客户请求,根据得到的Socket对象和客户计数创建服务线程,并启动
new MyServerThread(server.accept(), clientCount)
.start();

}
} catch (Exception e) {
// System.out.println("Can not listen to. " + e);
log.error("Error. " + e);
}
}
}).start();

new Thread(new QueseThread()).start();
}

//上为启动socket服务并监听客户端请求。

public MyServerThread(Socket socket, int clientCount) {

this.socket = socket;

cNumber = clientCount;

// System.out.println("当前在线的用户数: " + cNumber);

MainFrame.log.info("当前用户编号: " + cNumber);


}

@SuppressWarnings("unchecked")
public void run() {
try {

String line;

BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter os = new PrintWriter(socket.getOutputStream());

line = is.readLine();

String[] e = line.split(",");

while(!line.equals("close")){


MainFrame.log.info("用户第" + cNumber + "号,发送来的命令" + line);

MainFrame.log.info("当前用户socket: " + socket);

//此处的socket对象和cNumber已经出现重复。

如何去除这种重复对象,因为还要返回给client消息
...全文
205 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
killboss12 2012-10-29
  • 打赏
  • 举报
回复
自己顶一下
supphia 2012-10-28
  • 打赏
  • 举报
回复
这个代码不全的吧,再多发的一部分的,全局变量定义之类的都发上来
killboss12 2012-10-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

不像出现重复
[/Quote]对啊
killboss12 2012-10-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

这个代码不全的吧,再多发的一部分的,全局变量定义之类的都发上来
[/Quote]

//保存本进程的客户计数
private static int cNumber= 0;

//保存与本线程相关的Socket对象
private Socket socket = null;


是这2个变量吗?
killboss12 2012-10-27
  • 打赏
  • 举报
回复
自己顶一下,望高手指点一二。
ldq67123 2012-10-27
  • 打赏
  • 举报
回复
不像出现重复

62,621

社区成员

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

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