[英]Simple TCP in Java
我开始学习有关使用Java进行网络编程的知识。 这是我的第一个,但似乎我做对了。 断绝:
public class Server1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket server = new ServerSocket(2508);
Socket client = server.accept();
System.out.println("Connected");
while(true){
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
String str = br.readLine();
int num = Integer.parseInt(str);
if(num%2==0){
bw.write("Even");
}else{
bw.write("Odd");
}
bw.newLine();
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户:
public class EvenOddClient1 {
public static void main(String[] args) {
try {
Socket client = new Socket("Localhost", 2508);
while(true){
Scanner s = new Scanner(System.in);
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(client.getOutputStream()));
BufferedReader br = new BufferedReader(
new InputStreamReader(client.getInputStream()));
int num = s.nextInt();
bw.write(num);
bw.newLine();
bw.flush();
String str = br.readLine();
System.out.println(str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我认为我的代码无法读取客户的电话号码。 感谢帮助
您正在客户端中以二进制格式(作为int
)发送整数:
int num = s.nextInt();
bw.write(num);
并且您将其视为服务器中的字符串:
String str = br.readLine();
int num = Integer.parseInt(str);
向客户端发送“ 3” (例如)时在服务器中导致错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Server1.main(Server1.java:21)
这将关闭连接。
在您的客户端中,改为执行以下操作,将int
作为String
发送:
int num = s.nextInt();
bw.write( new Integer( num ).toString() );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.