目的是用TCP做一个简单的文本上传功能
这是客户端
import java.net.*;
import java.io.*;
class TextClient
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.1.103",10005);
//定义读取键盘数据对象
BufferedReader bufr =
new BufferedReader(new FileReader("TransClient.java"));
//定义目的,将数据写入socket输出流,发给服务器
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
String line = null;
while((line=bufr.readLine())!=null)
{
out.println(line);
}
s.shutdownOutput();
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = bufIn.readLine();
System.out.println(str);
bufr.close();
s.close();
}
}
这是服务端
class TextServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10005);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println("IP::"+ip);
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out =
new PrintWriter(new FileWriter("CopyOfTransClient.java"),true);
String line = null;
while((line=bufIn.readLine())!=null)
{
//if("over".equals(line))
// break;
out.println(line);
}
PrintWriter pw =
new PrintWriter(s.getOutputStream(),true);
pw.println("上传成功");
out.close();
s.close();
ss.close();
}
}
没有s.shutdownOutput() 能正常使用
客户端可以得到上传成功字段
加了shutdownOutput()表示结束后就报错了
因为我是看视频学习,视频上的代码和我一样的 所以不知道问题出哪里?
谢谢帮助~~
------解决方案--------------------
while((line=bufr.readLine())!=null)
{
out.println(line);
}
<span style="color: rgb(255, 0, 0);">s.shutdownOutput();</span>
应该是你没有发送完,就进行了shutdownOutput操作。
------解决方案--------------------
=========================
执行out.flush();试一试。
------解决方案--------------------
===========================================
我测试了你的代码,没有问题,采用加延迟让SERVER提前完成,错误也是读数据超时。
没有遇到这种问题,加临时QQ:1906294143,如果需要,我可以帮你看一下。
------解决方案--------------------
异常是发生在BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));
结合异常来看应该是你的服务端过早的关闭了,试着延迟关闭服务端看看会不会还出现这个异常