建立服务端的server socket。

一、代码实现

(1)最简单的server

在cmd中使用netstat -ano可以发现12345端口开放。浏览器访问127.0.0.1:12345可以弹窗。

QQ截图20150926145001

(2)稍微复杂一点

使用server socket创建聊天服务器。

上面的代码有一点不合理,accept()方法会造成阻塞,导致主线程的main被阻塞,程序直接卡死。在实际操作中,这种操作非常不可取。

所以,这些有阻塞的代码需要放置到一个独立的线程当中,这就需要使用多线程技术。

尝试创建线程:继承一个thread类:

再复写thread类的run方法:

因为每一个accept()方法都会创建一个新的socket对象,所以在多个客户端连接服务端时,会有多个socket出现。因此,我们需要一个while循环,循环监听来自客户端的链接请求。

因为每一个socket都要与一个独立的客户端连接,所以要另起一个新的线程,然后将socket传给新的线程。

实现main方法:

运行后,用cmd运行telnet链接localhost的12345,可以发现继续弹窗,而且可以弹出多个窗口。

(3)再复杂一点

改写chatsocket.java:

弹窗后点击确定,就会发现cmd里在疯狂输出,count在疯狂自增。

此时,可以加个sleep方法限制线程的休眠间歇。再次运行main,就会发现count正在缓慢自增

再次打开一个窗口,因为线程的缘故,可以发现两个窗口彼此独立,缓慢自增。

二、总结

记录一下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注