锁定老帖子 主题:Thread,Socket从头开始
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-13
场景:客户端将键盘输入的字符通过socket发送到服务端,当输入的字符为“exit”时,程序退出,服务端仅仅将接收到的信息打印出来。 服务端代码: public class SocketServer extends Thread{ private java.net.ServerSocket ss; private java.net.Socket s; @Override public void run() { try{ while(true){ this.s=this.ss.accept(); java.io.BufferedReader reader = new BufferedReader( new java.io.InputStreamReader( s.getInputStream())); String str=reader.readLine(); System.out.println("开始接受数据:"); while(str!=null){ System.out.println("读了一行"); System.out.println(str); str=reader.readLine(); } reader.close(); this.s.close(); } }catch(Exception ex){ ex.printStackTrace(); } } public SocketServer(int port){ try{ System.out.println("服务端启动......."); this.ss=new ServerSocket(port); }catch(Exception ex){ ex.printStackTrace(); } } public static void main(String[] args){ Thread t=new SocketServer(8888); t.start(); } } 客户端的代码: public class SocketClient{ public static void main(String[] args)throws Exception { java.net.Socket s=new java.net.Socket("127.0.0.1",8888); java.io.BufferedWriter out=new java.io.BufferedWriter( new java.io.OutputStreamWriter( new java.io.BufferedOutputStream(s.getOutputStream()))); java.io.BufferedReader reader=new BufferedReader( new java.io.InputStreamReader(System.in)); String str=reader.readLine(); while(!"exit".equals(str)){ out.write(str + "\n"); out.flush(); str=reader.readLine(); } reader.close(); out.close(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-13
下一步准备把客户端发送改为多线程发送,并采用线程池的方式,希望各位多提提意见。
|
|
返回顶楼 | |
发表时间:2010-12-14
其实我有一特2的问题:
假如机器上装了8个网卡,用了16家ISP的网络服务,有没有程序能把这些透明化呢?就是好像我只有一个网卡,一家服务一样? |
|
返回顶楼 | |
发表时间:2010-12-14
用mina啊,虽然我也不怎么熟悉,但是不错
|
|
返回顶楼 | |
发表时间:2010-12-14
狂汗。。。。。。。又在看书了吧,还是写在伯克利比较合适
|
|
返回顶楼 | |
发表时间:2010-12-14
关键是服务端,你服务端对请求的处理会阻塞其它客户端的请求,如果这个处理稍微耗时,多个客户端的情况下,问题就出来了
你下一步应该是改服务端,继续学习吧 |
|
返回顶楼 | |
发表时间:2010-12-14
其实你应该写个NIO的,再配上多任务线程.. 算是现在效率比较好的
|
|
返回顶楼 | |
发表时间:2010-12-14
现在NIO和IO不是一回事吗?
|
|
返回顶楼 | |
发表时间:2010-12-15
nakupanda 写道 现在NIO和IO不是一回事吗?
NIO 是非阻塞IO操作 IO是阻塞的 NIO在效率上讲要比IO的高 |
|
返回顶楼 | |
发表时间:2010-12-15
cwd306972384 写道 下一步准备把客户端发送改为多线程发送,并采用线程池的方式,希望各位多提提意见。
用不用线程池到无所谓,希望楼主在多线程同步上给出精彩的代码。一直想知道在java上是如何实现多路分离,以及串行化操作的? ps:由于被扣分,为了回这个贴,又做了一次论坛测试。 |
|
返回顶楼 | |