服务器程序:
import java.io.*;
import java.net.*;
public class server
{
public static void main(String args[])
{
try
{
ServerSocket ss=new ServerSocket(2000);
Socket s=ss.accept();
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
String str;
while((str=br.readLine())!=null)
{
System.out.println(str);
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}客户程序:
import java.net.*;
import java.io.*;
public class client
{
public static void main(String args[])
{
try
{
Socket s=new Socket("127.0.0.1",2000);
String str;
BufferedWriter br=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
br.write("\nHello World\n");
}
catch(Exception e)
{
System.out.println(e);
}
}
}我所面临的问题是:
如果我做错了什么,请解释一下。问题可能是在服务器读取时,客户端没有写任何东西。
发布于 2013-11-06 08:26:49
在客户端程序br.close();中写入流后关闭流
写入流后,必须关闭流或刷新流(br.flush()),因为当流关闭时,只能读取该流。I/O操作不能同时在同一流上执行。
两个套接字由相同的流连接,因此不能在该流上同时执行I/O操作。
发布于 2013-11-06 08:24:16
请添加一些调试语句以检查
(1)客户端是否能够与正在运行的服务器建立连接。所以在服务器部分中添加
Socket s=ss.accept();
System.out.println("one new connection");(2)在客户端程序中,在br.write行之后添加刷新()
br.write("\nHello World\n");
br.flush()
// use the below statement as well at last (if you no longer want to use the output stream)
br.close();请注意你只是在这里写一次..。为了继续阅读和写,你必须在循环中运行这个..。或者同时运行多个客户..。您必须在服务器端将每个套接字连接(接受后)执行到不同的线程中。
https://stackoverflow.com/questions/19807028
复制相似问题