【发布时间】:2017-08-20 11:00:37
【问题描述】:
到目前为止,我正在尝试学习 java 中的网络编程,我已经编写了 2 个代码,一个用于客户端,一个用于服务器端。首先我运行 serverCode,然后我运行客户端代码,但是客户端最终收到 null。
服务器端代码:
import java.net.*;
import java.io.*;
/**
*
* @author saksham
*/
public class Chatserver {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
ServerSocket serverSocket=new ServerSocket(6966);
while (true){
Socket request=serverSocket.accept();
System.out.println("Connection established");
PrintWriter pw=new PrintWriter(request.getOutputStream());
// InputStreamReader ir=new InputStreamReader(request.getInputStream());
//BufferedReader bf=new BufferedReader(ir);
//String msg=bf.readLine();
pw.println("you sent me the message:");
request.close();
}
}
}
客户端代码:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.io.*;
import java.util.Scanner;
/**
*
* @author saksham
*/
public class Chat {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
Socket socket=new Socket("127.0.0.1",6966);
// PrintWriter pw=new PrintWriter(socket.getOutputStream());
//System.out.println("\nEnter a message:->");
//Scanner sc=new Scanner(System.in);
//pw.println(sc.next());
InputStreamReader ir=new InputStreamReader(socket.getInputStream());
BufferedReader br=new BufferedReader(ir);
String rcvd=br.readLine();
socket.close();
System.out.println(rcvd);
rcvd=br.readLine();
System.out.println(rcvd);
}
}
我非常清楚我没有使用好的编码风格,它只是一个测试代码,因为我现在专注于学习。
【问题讨论】:
-
您可能不想在完成读取之前关闭套接字。
-
至少应该打印一条消息吧?
-
在关闭套接字之前,您需要关闭或至少刷新 ChatServer 类中的 PrintWriter。
标签: java sockets network-programming