关于Java socket 聊天程序中如何把线程1的文本传到其他线程中

服务器端的代码:

package 实验室项目一;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.IOException;
import java.net.InetAddress;

public class Server {

public static void main(String[] args) {
    try {

        //1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
        ServerSocket serverSocket=new ServerSocket(10086);
        Socket socket=null;
        //记录客户端的数量
        int count=0;
        System.out.println("***服务器即将启动,等待客户端的连接***");
        //循环监听等待客户端的连接

        while(true){
            //调用accept()方法开始监听,等待客户端的连接
            socket=serverSocket.accept();


            //创建一个新的线程
            ServerThread serverThread=new ServerThread(socket);
            //启动线程
            serverThread.start();

            count++;//统计客户端的数量
            System.out.println("客户端的数量:"+count);
            InetAddress address=socket.getInetAddress();
            System.out.println("当前客户端的IP:"+address.getHostAddress());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

package 实验室项目一;

/**

  • 服务器线程处理类 */

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

public class ServerThread extends Thread {
// 和本线程相关的Socket
Socket socket = null;

public ServerThread(Socket socket) {
    this.socket = socket;
}

//线程执行的操作,响应客户端的请求
public void run(){
    String msg;//客户端的消息
    DataInputStream is=null;
    DataOutputStream os=null;
    try {
        //获取输入流,并读取客户端信息
        is = new DataInputStream(socket.getInputStream());
        msg=is.readUTF();


        //获取输出流,响应客户端的请求
        os = new DataOutputStream(socket.getOutputStream());
        os.writeUTF(msg);//注意 啊,写到这儿不知道怎么把数据传到其他的线程中



    } catch (IOException e) {
        e.printStackTrace();
    }finally{
        //关闭资源
        try {

            if(is!=null)
                is.close();
            if(socket!=null)
                socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

}

1个回答

你这属于两个Java进程之间的通讯了,直接用socket编程就可以了,自己找个demo实践吧。

DarlingLLO
DarlingLLO 就是我不知道这个程序的服务端怎么把数据传到每个进程中,所以才提问的
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问