如何实现java中的java socket 多线程多线程通信

通过Java中的Socket技术编写能够进行双向通信的客户端和服务器,为了能够同时进行消息的发送和接受,在服务器和客户端都需要实现多线程操作,请编写程序代码实现双向通信。
本回答由提问者推荐Java Socket实现多线程通信功能示例
作者:kongxx
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Java Socket实现多线程通信功能,结合具体实例形式较为详细的分析了java多线程通信的原理及客户端、服务器端相应实现技巧,需要的朋友可以参考下
本文实例讲述了Java Socket实现多线程通信功能的方法。分享给大家供大家参考,具体如下:
前面的文章《》说到怎样写一个最简单的Java Socket通信,但是文章中的例子有一个问题就是Server只能接受一个Client请求,当第一个Client连接后就占据了这个位置,后续Client不能再继续连接,所以需要做些改动,当Server没接受到一个Client连接请求之后,都把处理流程放到一个独立的线程里去运行,然后等待下一个Client连接请求,这样就不会阻塞Server端接收请求了。每个独立运行的程序在使用完Socket对象之后要将其关闭。代码如下:
package com.googlecode.garbagecan.test.socket.sample2;
import java.io.BufferedR
import java.io.IOE
import java.io.InputStreamR
import java.io.PrintW
import java.net.ServerS
import java.net.S
public class MyServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(10000);
while (true) {
Socket socket = server.accept();
invoke(socket);
private static void invoke(final Socket client) throws IOException {
new Thread(new Runnable() {
public void run() {
BufferedReader in =
PrintWriter out =
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream());
while (true) {
String msg = in.readLine();
System.out.println(msg);
out.println("Server received " + msg);
out.flush();
if (msg.equals("bye")) {
} catch(IOException ex) {
ex.printStackTrace();
} finally {
in.close();
} catch (Exception e) {}
out.close();
} catch (Exception e) {}
client.close();
} catch (Exception e) {}
}).start();
下面是Client程序代码:
package com.googlecode.garbagecan.test.socket.sample2;
import java.io.BufferedR
import java.io.InputStreamR
import java.io.PrintW
import java.net.S
public class MyClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 10000);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String msg = reader.readLine();
out.println(msg);
out.flush();
if (msg.equals("bye")) {
System.out.println(in.readLine());
socket.close();
测试,首先运行MyServer类,然后运行两个MyClient类,然后分别在每个MyClient的提示符下输入字符串,就可以看到Server可以分别接收处理每个Client的请求了。
更多关于java相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》和《》
希望本文所述对大家java程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具java web项目中使用Socket通信多线程,长连接_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:632,956贴子:
java web项目中使用Socket通信多线程,长连接收藏
java web项目中使用Socket通信多线程,长连接-java程序员个人博客,web前端个人博客 来自:
智联招聘,每天更新350万高薪招聘java程序员信息,真实有效,24小时极速反馈,立即登录填写简历,快速找到好工作!
有想要JAVA资料的么,可以留个邮箱
登录百度帐号推荐应用用Java实现多线程socket通信_陈小艳_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用Java实现多线程socket通信_陈小艳
&&用Java实现多线程socket通信
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 java socket 多线程 的文章

 

随机推荐