62,623
社区成员
发帖
与我相关
我的任务
分享
import java.lang.String;
服务器代码片段:
while(true){
s = in.readLine(); //这里是读吧,直到读到以个回车吧
//11标示 s=s+"\n"; 加个回车符号不就好了?是的,
System.out.println(s);
}
客户端片段:
while(true){
System.out.print("messge:");
String s = bf.readLine(); //这里是读,要用户输入吧,但是回车符不会独到s里面去吧,其实是这样的。
out.write(s); //这里就是吧s发出去吧,恩对 好问题来来了,就是,你没发送回车符,那你看看上面的服务器段的代码,你//是要读到回车符(in.readLine())吧 ,才把把他在服务器段输出吧。但是你没发送回车符啊?那服务器就一直读啊,所以 就//没打印出来,所以你就一位服务器没读到客户发的消息。 这个问题解决的办法是加上 11 标示 出代码
out.flush();
}
这样代码大概就是:
服务器短:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
class Server {
public static void main(String[] args){
try {
System.out.println("Server wait client connect to this:");
ServerSocket server = new ServerSocket(8000);
Socket socket = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = null;
// int s;
System.out.println("Server:");
while((s = in.readLine())!=null){
//s = in.readLine();
System.out.println(s);
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
客户段:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.*;
class Client {
public static void main(String[] args){
Socket socket;
try {
socket = new Socket("127.0.0.1",8000);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Client:");
while(true){
String s = bf.readLine();
//out.println(s);
s=s+"\n";
out.write(s);
System.out.println("is???"+s);
// out.println();
out.flush();
Thread.sleep(1000);
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
//我只是稍微该了下你的代码,不好意,你自己吧关键几个错误哦的地方换为正确就可以了,上面的是调试了的我调试了的(不想误//人子弟^_^),其实想下如果用PringWriter的话就可以用out。println()去做了,不用再加个回车符了,看下面的代码我写的:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.*;
class Client {
public static void main(String[] args){
Socket socket;
try {
socket = new Socket("127.0.0.1",8000);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Client:");
while(true){
String s = bf.readLine();
out.println(s);
out.flush();
Thread.sleep(1000);
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
class Server {
public static void main(String[] args){
try {
System.out.println("Server wait client connect to this:");
ServerSocket server = new ServerSocket(8000);
Socket socket = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String s = null;
System.out.println("Server:");
while((s = in.readLine())!=null){
System.out.println(s);
}
}catch(Exception e) {
e.printStackTrace();
}
}
}