新手 请教 java socket 通信 与多线程的问题

JR_xiaobai 2017-12-11 12:29:57
问题:启动两个客户端 服务器无法进行转发
服务器可以接收到 客户端的信息

//客户端
import java.io.*;
import java.net.*;
import java.util.Scanner;

public class Client{
Socket s;
InputStreamReader isr=null;
BufferedReader br=null;
PrintWriter pw=null;
Scanner in;
public Client() {
try {
s=new Socket("127.0.0.1",998);//J4207459/192.168.58.236
pw=new PrintWriter(s.getOutputStream(),true);
isr=new InputStreamReader(s.getInputStream());
br=new BufferedReader(isr);
System.out.print("请输入你的名字:");
in=new Scanner(System.in);
String name=in.nextLine();
while(true){
System.out.print("请输入想说的话:");
String text=in.nextLine();
pw.println(name+"说:"+text);

String line=br.readLine();
System.out.println(line);
}
} catch (Exception e) {
// TODO: handle exception
}finally{
try {

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Client();
}

}
//服务器端
import java.net.*;
public class Server {
Socket s;
ServerSocket ss;
public Server() {
// TODO Auto-generated constructor stub
try {
ss=new ServerSocket(998);
System.out.println("服务器启动....");
while(true){
s=ss.accept();
System.out.println("服务器与客户端创建链接 ");
Runnable r=new ServerThread(s);
new Thread(r).start();
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Server();
}

}
服务器线程

import java.io.*;
import java.net.*;

public class ServerThread implements Runnable {
Socket s;
InputStreamReader isr;
BufferedReader br;
PrintWriter pw;
public ServerThread(Socket s) {
// TODO Auto-generated constructor stub
this.s=s;
}
public void run() {
// TODO Auto-generated method stub
try {
pw=new PrintWriter(s.getOutputStream(),true);
isr=new InputStreamReader(s.getInputStream());
br=new BufferedReader(isr);
while(true){
String line=br.readLine();
System.out.println("服务器读取到信息--"+line);

pw.println(line);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
pw.close();
br.close();
isr.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

}
...全文
352 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
JR_xiaobai 2018-01-01
  • 打赏
  • 举报
回复
引用 1 楼 我自横刀香甜笑的回复:
https://www.cnblogs.com/qqzy168/p/3772215.html 参考下这个例子吧
感谢 我以为没人会回答的
  • 打赏
  • 举报
回复

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧