最近在与第三方系统对接接口时,需要用到? ?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("我是一棵快乐的韭菜")
?
|