已经写好了服务端和客户端,大家帮忙看看为什么收不到信息。
服务端:
package com.polyphylla.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class SocketServer {
private PrintWriter pw;
private BufferedReader br;
private ServerSocket ss;
private Socket s;
public static void main(String[] args) {
new SocketServer().start();
}
public void start() {
// TODO Auto-generated method stub
try {
ss = new ServerSocket(2222);
while (true) {
s = ss.accept();
pw = new PrintWriter(s.getOutputStream(), true);
br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
String msg = "";
try {
// while(true) {
while (true) {
msg = br.readLine();
System.out.println("client:" + msg);
}
// }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable() {
public void run() {
while (true) {
Scanner s = new Scanner(System.in);
String msg = s.next();
pw.print(msg);
}
}
}).start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端:
package com.polyphylla.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class SocketClient {
private PrintWriter pw;
private BufferedReader br;
private Socket s;
public static void main(String[] args) {
new SocketClient().start();
}
public void start() {
// TODO Auto-generated method stub
try {
s = new Socket("127.0.0.1", 2222);
pw = new PrintWriter(s.getOutputStream(), true);
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
String msg = "";
try {
while (true) {
msg = br.readLine();
System.out.println("server:" + msg);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable() {
public void run() {
while (true) {
Scanner s = new Scanner(System.in);
String msg = s.next();
pw.print(msg);
}
}
}).start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java socket问题,帮忙看看。收不到信息。
答案:5 悬赏:40 手机版
解决时间 2021-02-11 11:08
- 提问者网友:我没有何以琛的痴心不悔
- 2021-02-11 02:44
最佳答案
- 五星知识达人网友:鸽屿
- 2021-02-11 03:50
其实这个通讯的流程你不还是不清楚。要一个写,一个读,这个过程都是单向的。就是说如果客户端先写。那么服务器就读,或者是服务器先写。客户端读。这样子才行。
全部回答
- 1楼网友:骨子里都是戏
- 2021-02-11 07:46
把你服务端的:server.close(); 这一句注释了,试试。
- 2楼网友:醉吻情书
- 2021-02-11 06:17
我是来观望的。
- 3楼网友:往事埋风中
- 2021-02-11 05:34
把pw.print(msg);
改成pw.println(msg);
或改成pw.print(msg);pw.flush();
就可以了
- 4楼网友:平生事
- 2021-02-11 04:41
问题出在流上面
public void run() {
// TODO Auto-generated method stub
String msg = "";
try {
while (true) {
msg = br.readLine();
客户端走到这一步就走不下去了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯