java socket编程,希望高手帮忙,马上结贴!
Socket编程问题
服务器端Server.java源文件如下:
import java.net.*;
import java.io.*;
public class Server
{
private ServerSocket ss;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Server()
{
try
{
ss = new ServerSocket(10000);
while (true)
{
socket = ss.accept();
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = in.readLine();
System.out.println("you input is :" + line);
in.close();
socket.close();
ss.close();
}
}
catch (IOException e)
{}
}
public static void main(String[] args)
{
new Server();
}
}
客户端Client.java代码如下:
import java.io.*;
import java.net.*;
public class Client
{
Socket socket;
BufferedReader in;
PrintWriter out;
public Client()
{
try
{
socket = new Socket("172.18.0.190", 10000);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader line = new BufferedReader(new InputStreamReader(System.in));
System.out.println(line.readLine());
line.close();
in.close();
socket.close();
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
public static void main(String[] args)
{
new Client();
}
}
编译都没有问题,可是我在客户端输入一个任意字符串,服务器端
String line = in.readLine();这句从缓冲区读出来的是空的。怎么回事?哪位兄弟能给帮个忙?
我对它的原理是这样理解的:
首先服务端建立一个监听,然后客户端根据服务器端IP和端口进行连接,连接成功之后,向服务器端的缓冲区发送一个字符串,服务器端读出缓冲区的字符串。然后清除掉缓冲区的数据,服务器端也向自己的缓冲区发送一个字符串,客户端读取服务器端的缓冲区字符串,整个交互过程完毕。
这个理解是不是有误??