DarlingLLO 2016-11-30 12:02 采纳率: 0%
浏览 842

关于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条回答

  • 毕小宝 博客专家认证 2016-11-30 12:02
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程