导航:首页 > 编程语言 > javasocket客户端多线程

javasocket客户端多线程

发布时间:2023-05-03 23:20:11

java多线程socket通信原理是什么

当Server每接受到一复个Client连接请制求之后,都把处理流程放到一个独立的线程里去运行,然后等待下一个Client连接请求,这样就不会阻塞Server端接收请求了。每个独立运行的程序在使用完Socket对象之后要将其关闭。这样就实现了多线程socket通信。

❷ java socket多线程问题,我写了一个socket tcp服务端,高手来进来看下,谢啦。是关于多客户端并联的问题

不对,你应该单独写个一个处理线程类,如果需要的连接就new一下,因为每次new一下,专线程的名字都不一样,但属如果后期要用到销毁的时候,最好写一个hasMap存储这些线程,当下线时,就根据values来销毁或遍历一下hasMap,获取到线程的名字,然后就destroy();
韩顺平java视频教程里的qq项目里有详细的解说!

❸ 求Java中用socket通信的多线程服务端,要求客户端可以长时间连接及发送信息并且无需每次都要创建新对象

创建一个新线程时将这个线程对象的引用赋给一个变量:

MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();

在你的线程类中应该提供一个方法,用于关闭这个线程所创建的socket连接。例如你的MyThread类中应该提供一个关闭socket的方法:
public void closeSocket()
{
//这里关闭当前对象的socket
}

这样,如果你想关闭thread1中的连接(该连接使用8888端口),则只要调用这个方法:

thread1.closeSocket();

❹ Java 多线程 用socket通信

ServerSocket
server=new
ServerSocket(port);
/*..以下是监御首听旦拆祥.*/
try{
while(true){
Socket
socket=server.accept(0;
Thread
handleThread=new
Thread(new
HandleRun(socket)).start();
//直接把跟客户端连接的socket放到一个线程中处理。
//模搏之后,自己定义一个实现Runnable的HandleRun类即可(用于处理c-s之间的通信)
}
}catch(Exception
ex){}
看不懂的话,就追问。再不会的话,可以花点时间帮你写个小小的Demo

❺ socket一个服务端多个客户端,多线程这么实现

2种方式,一种:你处理客户端的连接,开一个子线程(需要注意:控制线程个数),第二种:异步挂起处理、

❻ JAVA程序完成服务器和客户端的SOCKET通讯,要求服务器使用多线程接收和处理多个客户端访问请求

1. 客户端程序
import java.io.*;
import java.net.*;
public class TalkClient {
public static void main(String args[]) {
try{
Socket socket=new Socket("127.0.0.1",4700);
//向本机的4700端口发出客户请求
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
String readline;
readline=sin.readLine(); //从系统标准输入读入一字符串
while(!readline.equals("bye")){
//若从标准输入读入的字符串为 "bye"则停止循环
os.println(readline);
//将从系统标准输入读入的字符串输出到Server
os.flush();
//刷新输出流,使Server马上收到该字符串
System.out.println("Client:"+readline);
//在系统标准输出上打印读入的字符串
System.out.println("Server:"+is.readLine());
//从Server读入一字符串,并打印到标准输出上
readline=sin.readLine(); //从系统标准输入读入一字符串
} //继续循环
os.close(); //关闭Socket输出流
is.close(); //关闭Socket输入流
socket.close(); //关闭Socket
}catch(Exception e) {
System.out.println("Error"+e); //出错,则打印出错信息
}
}
}
2. 服务器端程序
import java.io.*;
import java.net.*;
import java.applet.Applet;
public class TalkServer{
public static void main(String args[]) {
try{
ServerSocket server=null;
try{
server=new ServerSocket(4700);
//创建一个ServerSocket在端口4700监听客户请求
}catch(Exception e) {
System.out.println("can not listen to:"+e);
//出错,打印出错信息
}
Socket socket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客户请求,有客户
//请求到来则产生一个Socket对象,并继续执行
}catch(Exception e) {
System.out.println("Error."+e);
//出错,打印出错信息
}
String line;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriter os=newPrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
System.out.println("Client:"+is.readLine());
//在标准输出上打印从客户端读入的字符串
line=sin.readLine();
//从标准输入读入一字符串
while(!line.equals("bye")){
//如果该字符串为 "bye",则停止循环
os.println(line);
//向客户端输出该字符串
os.flush();
//刷新输出流,使Client马上收到该字符串
System.out.println("Server:"+line);
//在系统标准输出上打印读入的字符串
System.out.println("Client:"+is.readLine());
//从Client读入一字符串,并打印到标准输出上
line=sin.readLine();
//从系统标准输入读入一字符串
} //继续循环
os.close(); //关闭Socket输出流
is.close(); //关闭Socket输入流
socket.close(); //关闭Socket
server.close(); //关闭ServerSocket
}catch(Exception e){
System.out.println("Error:"+e);
//出错,打印出错信息
}
}}

❼ java socket多线程的问题可以多个线程使用同一个socket吗

可以写个demo试一下啊,应该是可以的,socket接收到的消息只能被其中一个线程接收。线程1 和2 接受到的肯定不是同一个消息。会有先后之分。看你怎么控制。比如从接收的消息是ABCD,那么这相当于一个资源。线程1和2在这里拿消息,拿到之后,socket里面就少了,比如线程1拿到AB,线程2拿到CD

❽ java socket客户端还用多线程吗

服务端要同时为很多客户工作的话,简单的设计就是使用多线程,每个线程为一个客户工作版。权客户端通常不需要特别多的线程,但是一般也需要一个工作线程负责和服务端的协议处理,一个界面的线程,否则如果网络阻塞,用户的体验会很不好(界面总是卡壳)。当然简单学习的话,客户端用单线程也是可以的。

例子代码很多Java编程的书里都有,可以在网上搜索一下。推荐还是去下载一本Java网络编程的电子书吧,不然光看实例源代码,一些基本概念和处理方法不太容易明白为什么要这样做的。

❾ socket java实现客户端多线程接受消息并发送消息给服务器,并发执行

对于通信来说,不存在绝对的服务器和客户端,谁在等待别人来,谁就是服务器,谁主动去联系人,谁就是客户端。
所以。
你要想客户端接受消息,那在启动客户端的时候,在客户端程序里开始一个提供端口的Socket就可以了。
ServerSocket serverSocket = new ServerSocket(5000);
while (true) {
final Socket socket = serverSocket.accept();
new Thread() {
Socket mySocket = socket;

@Override
public void run() {
try {
System.out.println(mySocket);
InputStream is = mySocket.getInputStream();
byte[] bytes = new byte[1024];
int n = is.read(bytes);
System.out.println(new String(bytes, 0, n));
OutputStream os = mySocket.getOutputStream();
os.write(("server reply at time " + new Date()
.toString()).getBytes());
mySocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}

阅读全文

与javasocket客户端多线程相关的资料

热点内容
桌面云配置文件分离 浏览:505
iphone5如何升级4g网络 浏览:5
团购是在哪个app 浏览:897
打开多个word文档图片就不能显示 浏览:855
腾讯新闻怎么切换版本 浏览:269
app安装失败用不了 浏览:326
桌面文件鼠标点开会变大变小 浏览:536
手机误删系统文件开不了机 浏览:883
微信兔子甩耳朵 浏览:998
android蓝牙传文件在哪里 浏览:354
苹果6s软解是真的吗 浏览:310
c语言代码量大 浏览:874
最新网络卫星导航如何使用 浏览:425
以下哪些文件属于图像文件 浏览:774
zycommentjs 浏览:414
确认全血细胞减少看哪些数据 浏览:265
文件有哪些要求 浏览:484
cad打开时会出现两个文件 浏览:65
什么是转基因网站 浏览:48
手柄设备有问题代码43 浏览:921

友情链接