java多线程socket
1. 请问,java网络编程中像socket以及多线程这些,哪些地方用到现在工作基本都用框架,感觉即使
网络编程的前景来很不错的,源随着移动互联网的普及与发展,手机应用不断深入我们生活的方方面面,移动系统和软件应用的开发领域,成为了未来很具有潜力的行业之一。
在未来5年内,合格软件人才的需求将远大于供给。其中,尤以JAVA、PHP、HTML5与CSS3开发、Asp.net开发人才最为缺乏。
2. 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();
3. 通过java中的socket技术编写能够回显客户端输入的多线程服务器端
import java.io.*;
import java.net.*;
public class EchoServer {
public static void main(String[] args) {
new EchoServer().startServer();
}
boolean bstop=false;
public void startServer() {
try {
//创建服务器,并开放88端口
ServerSocket server=new ServerSocket(88);
System.out.println("服务于88端口\n客户端发exit/quit结束当前连接;发stop停止服务器");
while(!bstop){
//监听服务器端口,一旦有数据发送过来,那么就将数据封装成socket对象
//如果没有数据发送过来,那么这时处于线程阻塞状态,不会向下继续执行
Socket socket=server.accept();
System.out.println("客户端信息:"+socket.getRemoteSocketAddress());
new EchoThread(socket).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
class EchoThread extends Thread{
private Socket socket;
public EchoThread(Socket socket){
this.socket=socket;
}
public void run(){
BufferedReader br=null;
PrintWriter pw=null;
try {
//从socket中得到读取流,该流中有客户端发送过来的数据
//InputStreamReader将字节流转化为字符流
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw=new PrintWriter(socket.getOutputStream());
pw.println("客户端发exit/quit结束当前连接;发stop停止服务器\n");
pw.flush();
String info;
while((info=br.readLine())!=null){//行读取客户端数据
System.out.println(info);
pw.println(info);
pw.flush();
if("quit".equals(info) || "exit".equals(info)){
break;
}else if("stop".equals(info)){
bstop=true;
System.exit(0);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {pw.close();} catch (Exception e) {}
try {br.close();} catch (IOException e) {}
try {socket.close();} catch (IOException e) {}
}
}
}
}
4. 如何用java线程池和socket实现群聊和私聊
这个可以用TCP或者用UDP实现
如果使用TCP,使用SOCKET,服务器端就是处理转发数据的,有客户端新上线,连上SOCKET就分配一个线程,这个很容易实现
如果使用UDP,客户端上线的时候给服务器端发一个请求,然后建立连接
不知道你是说的广播式的还是点对点式的,如果是广播的很简单,一个客户端发了,然后服务器端建立一个MAP然后遍历MAP进行转发就是了,如果是点对点的实现起来有一点点复杂,呵呵,希望对你有帮助哈
5. java多线程socket通信原理是什么
当Server每接受到一个Client连接请求之后,都把处理流程放到一个独立的线程里去运行,然后等待下一个Client连接请求,这样就不会阻塞Server端接收请求了。每个独立运行的程序在使用完Socket对象之后要将其关闭。这样就实现了多线程socket通信。
6. java socket编程,两个socket,多个线程,好比A socket的数据,怎么发送到B socket端口,一个socket好弄
先有个ServerSocket,监听链接到它上面的所有请求(即accept()函数),accept返回一个Socket对象,你可以保存所有的已经链接的Socket对象,然后可以从每个socket找到该链接的Address和其他信息(详见API),根据该地址来选择性发送数据。
7. 有java serversocket 的多线程程序嘛,接收多客户端的信息,向多客户端发送命令
首先来看一下服务器端的任务: 1.服务器端应当建立一个ServerSocket,并且由于客户端需要同时能够接收信息以及发送信息,所以也必须利用多个线程来实现。
8. java多线程使用一个Sokcet读取流
可以啊 ,不过需要新建两个实现Runnable 借口的类,重写run方法,一个实现读取,另一个实现输出的功能。再用两条线程分别操作这两个方法。
9. java socket多线程的问题可以多个线程使用同一个socket吗
可以写个demo试一下啊,应该是可以的,socket接收到的消息只能被其中一个线程接收。线程1 和2 接受到的肯定不是同一个消息。会有先后之分。看你怎么控制。比如从接收的消息是ABCD,那么这相当于一个资源。线程1和2在这里拿消息,拿到之后,socket里面就少了,比如线程1拿到AB,线程2拿到CD
10. 关于java多线程socket局域网聊天的问题
new serverchat(sockets[num]).run(); 这个可不是多线程的使用方法啊。改为new serverchat(sockets[num]).start();