[英]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.