大二实习,给布置的任务,还要求要能实现中文的输入,输出,但是出现问题,程序到了发出后就没动了,不知道错到哪里了,555.客户端
public class Client {
public static void main(String[] args) throws IOException {
String send=null;
System.out.println("请输入");
Scanner getSend=new Scanner(System.in);
send=getSend.next();
Socket s =new Socket("127.0.0.1",4242);
System.out.println("Connected to server...sending echo string");
PrintWriter writer =new PrintWriter(s.getOutputStream());
writer.println(send);
writer.flush();
InputStreamReader in = new InputStreamReader(s.getInputStream()); BufferedReader bufferedReader= new BufferedReader(in);
String oneLine=bufferedReader.readLine();
System.out.println("客户端收到"+oneLine);
bufferedReader.close();
in.close();
writer.close();
s.close();
}
}服务器public class Server {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket servSocket = new ServerSocket(4242);
System.out.println("监听4242");
boolean exist=true;
while (exist) {
Socket clntSocket = servSocket.accept();
// 获取连接的客户端的 SocketAddress
SocketAddress clientAddress = clntSocket.getRemoteSocketAddress();
System.out.println("收到的地址为" + clientAddress);
InputStreamReader in = new InputStreamReader(clntSocket.getInputStream()); BufferedReader bufferedReader= new BufferedReader(in);
String oneLine= null;
while(bufferedReader.read() != -1){
oneLine = oneLine + bufferedReader.readLine();
}
System.out.println(oneLine);
String returnLine="abcd";
switch(oneLine){
case "双色球": returnLine="你中了双色球"; break;
case "大乐透" : returnLine="你中了大乐透"; break;
case "英雄联盟" : returnLine="LOL"; break;
}
if(oneLine=="关闭")
exist=false;
PrintWriter writer =new PrintWriter(clntSocket.getOutputStream());
writer.println("returnLine");
System.out.println(" 客户端关闭连接");
writer.close();
clntSocket.close();
}
}
}
socket服务器
public class Client {
public static void main(String[] args) throws IOException {
String send=null;
System.out.println("请输入");
Scanner getSend=new Scanner(System.in);
send=getSend.next();
Socket s =new Socket("127.0.0.1",4242);
System.out.println("Connected to server...sending echo string");
PrintWriter writer =new PrintWriter(s.getOutputStream());
writer.println(send);
writer.flush();
InputStreamReader in = new InputStreamReader(s.getInputStream()); BufferedReader bufferedReader= new BufferedReader(in);
String oneLine=bufferedReader.readLine();
System.out.println("客户端收到"+oneLine);
bufferedReader.close();
in.close();
writer.close();
s.close();
}
}服务器public class Server {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket servSocket = new ServerSocket(4242);
System.out.println("监听4242");
boolean exist=true;
while (exist) {
Socket clntSocket = servSocket.accept();
// 获取连接的客户端的 SocketAddress
SocketAddress clientAddress = clntSocket.getRemoteSocketAddress();
System.out.println("收到的地址为" + clientAddress);
InputStreamReader in = new InputStreamReader(clntSocket.getInputStream()); BufferedReader bufferedReader= new BufferedReader(in);
String oneLine= null;
while(bufferedReader.read() != -1){
oneLine = oneLine + bufferedReader.readLine();
}
System.out.println(oneLine);
String returnLine="abcd";
switch(oneLine){
case "双色球": returnLine="你中了双色球"; break;
case "大乐透" : returnLine="你中了大乐透"; break;
case "英雄联盟" : returnLine="LOL"; break;
}
if(oneLine=="关闭")
exist=false;
PrintWriter writer =new PrintWriter(clntSocket.getOutputStream());
writer.println("returnLine");
System.out.println(" 客户端关闭连接");
writer.close();
clntSocket.close();
}
}
}
socket服务器
oneLine是String, 怎么能用在switch中呢?
oneLine = oneLine + bufferedReader.readLine();
}
这边不要用循环 还是用 String oneLine=bufferedReader.readLine();
另外,虽然jdk支持了String的case,建议还是转换成int,效率高些。还有你的case要加括号的亲: case "双色球": { returnLine="你中了双色球"; break;}