繁体   English   中英

Java中的简单TCP

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM