最近在与第三方系统对接接口时,需要用到 socket
这种方式,在调试过程中,一直出现java.net.SocketException: Connection reset
这个错误
我的客户端代码
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
public class ClientDemo1 {
public static void main(String[] args) throws IOException {
System.out.println("客户端启动");
// 1、创建客户端连接服务端的通道
Socket socket = new Socket("127.0.0.1",7777);
// 2、从socket获取一个字节输出流
OutputStream os = socket.getOutputStream();
// 3、将字节输出流转成更高级的打印流
PrintStream ps = new PrintStream(os);
// 4、发送信息
ps.print("我是一棵快乐的韭菜");
System.out.println("发送成功");
ps.flush();
}
}
服务端代码
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ServiceDemo1 {
public static void main(String[] args) {
System.out.println("服务端启动");
try {
// 1、创建服务端对象
ServerSocket serverSocket = new ServerSocket(7777);
// 2、调用accept方法,等待客户端的Socket连接请求,建立Socket通信
Socket socket = serverSocket.accept();
// 3、从socket获取一个字符输入流
InputStream is = socket.getInputStream();
// 4、将字节输入流 转成 更高级的 字符缓冲输入流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String msg;
if((msg = br.readLine()) != null){
System.out.println(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
错误提示
原因:
服务端读取客户端发送的数据的代码 br.readLine()读取的是一行的代码,而客户端发送数据的代 码 ps.print("我是一棵快乐的韭菜") 发送的不是一行的代码,因为结尾没有换行符
修改:
将 ps.print("我是一棵快乐的韭菜") 修改成 ps.println("我是一棵快乐的韭菜")
版权声明:本文为ll6677_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。