当前位置:首页 » 编程语言 » javasocket线程

javasocket线程

发布时间: 2022-04-22 01:00:05

java socket 线程

以前写过一个简单的远程控制软件(命令行控制,就是在本机发个命令,在远程机器执行),用的即使Socket,代码找不到了,但原理很简单。就是自己定义一个简单协议,简单点就用Java序列化,封一个自定义命令对象,每次发一个对象过去,对方接受后,执行命令对象就是了。
下面发一个间的JavaSocket例子:


importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.net.ServerSocket;
importjava.net.Socket;
importjava.net.UnknownHostException;

publicclassJavaXmlSocket{

/**
*@paramargs
*@throwsIOException
*@throwsClassNotFoundException
*/
publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException{
//TODOAuto-generatedmethodstub
finalServerSocketss=newServerSocket(32788);//创建服务端



newThread(){

@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
try{
Sockets2=ss.accept();
ObjectOutputStreamoutput_s2;
ObjectInputStreaminput_s2;
output_s2=newObjectOutputStream(s2.getOutputStream());//服务端输出流
input_s2=newObjectInputStream(s2.getInputStream());//服务端输入流

//服务端向客户端发送消息
output_s2.writeObject("hello");
Stringstr=(String)input_s2.readObject();
System.out.println("服务端接收端客户端发送的消息:"+str);
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}


}

}.start();//启动一个线程服务端侦听客户端连接

newThread(){

@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
try{
Sockets1=newSocket("127.0.0.1",32788);//创建客户端,注册并绑定ServerSocket
ObjectOutputStreamoutput_s1;

ObjectInputStreaminput_s1;
output_s1=newObjectOutputStream(s1.getOutputStream());//客户端输出流
input_s1=newObjectInputStream(s1.getInputStream());//客户端输入流

//客户端向服务端发送消息
output_s1.writeObject("hello");
Stringstr2=(String)input_s1.readObject();
System.out.println("客户端接收端服务端发送的消息:"+str2);
}catch(UnknownHostExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}


}.start();////启动一个线程客户端端连接服务端

try{
//如果你保证Main方法不会退出,就不需要这个延时。
Thread.sleep(5000);//延时5秒等待消息处理结束关闭服务端。

}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

//关闭服务
ss.close();


}

}

㈡ java socket服务器端线程卡死

对于socket通信的操作,不要放在主线程,另开一个子线程,顺便一说,accept这个方法是堵塞的,在没有收到消息的情况下会一直堵塞在那里,所以如果你客户端没发送数据给服务端,那么基本服务端所在那条线程会停滞在那个方法,估计就这原因让你的程序看起来是卡死的,所以咯,别把通信的操作写在主线程,要写在子线程

㈢ java一个Socket连接多线程是否能操作两个读取流

可以啊 ,不过需要新建两个实现Runnable 借口的类,重写run方法,一个实现读取,另一个实现输出的功能。再用两条线程分别操作这两个方法。

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

第一,程序是通过分时进行服务的。就是说一个程序监听一个端口,第一秒可以从别的地方来一个包,第二秒可以从另一个地方来一个包。
第二,每个socket都会有包发送来的ip地址和端口号,服务器向这个ip对应机器的端口发送数据以回应对方。

㈤ java socket 如何使输入输出流分别在不同线程工作

你这个问题我读的不是很懂

Socket连接到ServerSocket后会返回一个Socket对象给服务器,服务器就通过这个Socket对象和客

户端的Socket进行沟通,通过输入输出流取得和发送消息,我用到的对象有InputStream、

OutputStream(通过Socket的get****Stream获得输入输出流),ObjectOutputStream、

ObjectInputStream(用于发送和接收一个对象)

接收端:肯定要开一个线程独立运行,才能达到发送和接收消息互不干扰

发送端:即一个方法,需要发送东西时调用,函数带个发送的对象作为参数

大概就这些吧,希望能帮到你

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

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

㈦ 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的消息推送问题

关于 java socket的消息推送问题,首先:开启服务端,并暴露出端口。然后通过一个while的死循环去不停的接收来自客户端的socket,并且通过一个ArrayList来维护。并且通过子线程去对list中的socket进行操作。
其次:客户端去访问服务器的端口。开启一个子线程去不停的接收来自服务端的消息。
然而关于推送服务的更多内容,可以通过深圳极光公司了解一下。深圳市和讯华谷信息技术有限公司(极光 Aurora Mobile)成立于2011年,是中国领先的开发者服务提供商,专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。
同时,极光的行业应用已经拓展至市场洞察、金融风控与商业地理服务,助力各行各业优化决策、提升效率。

热点内容
cf弹道脚本 发布:2025-01-26 15:36:40 浏览:54
我的世界花钱买的服务器 发布:2025-01-26 15:34:50 浏览:89
php环境部署 发布:2025-01-26 15:28:09 浏览:17
python实现svm 发布:2025-01-26 15:24:25 浏览:381
易语言写ip全局代理服务器 发布:2025-01-26 15:04:01 浏览:668
gm命令在哪个文件夹 发布:2025-01-26 15:03:12 浏览:307
javadate类 发布:2025-01-26 14:58:54 浏览:352
领航s1配置怎么样 发布:2025-01-26 09:58:10 浏览:763
公司局域网搭建服务器搭建 发布:2025-01-26 09:16:56 浏览:433
android裁剪圆形图片 发布:2025-01-26 09:05:56 浏览:411