Java 将数据发送到打开的服务器套接字

Java 将数据发送到打开的服务器套接字,java,sockets,Java,Sockets,我有一个在远程机器上运行的套接字服务器程序,我想通过客户端套接字程序发送数据,而无需每次创建新的套接字连接。 只要服务器套接字是打开的,我只需要发送数据。同样需要java代码。 这是我目前使用的代码 第一次运行正常,第二次运行时,它显示连接被拒绝 String host = "machinename"; int port = 23000; InetAddress address = InetAddress.getByName(host); //establish a

我有一个在远程机器上运行的套接字服务器程序,我想通过客户端套接字程序发送数据,而无需每次创建新的套接字连接。 只要服务器套接字是打开的,我只需要发送数据。同样需要java代码。 这是我目前使用的代码 第一次运行正常,第二次运行时,它显示连接被拒绝

String host = "machinename";
     int port = 23000;
     InetAddress address = InetAddress.getByName(host);
     //establish a socket connection with server
     socket = new Socket(address, port);
     //send msg to server
     OutputStream os = socket.getOutputStream();
     OutputStreamWriter osw = new OutputStreamWriter(os);
     BufferedWriter bw = new BufferedWriter(osw);
     String request = "data";

     String sendMessage = request + "\n";
     bw.write(sendMessage);
     bw.flush();
     InputStream is = socket.getInputStream();
     InputStreamReader isr = new InputStreamReader(is);
     BufferedReader br = new BufferedReader(isr);
     String message = br.readLine();
加:

socket.setKeepAlive(true)

在您的

套接字=新套接字(地址、端口)

第二次运行时,它显示连接被拒绝

String host = "machinename";
     int port = 23000;
     InetAddress address = InetAddress.getByName(host);
     //establish a socket connection with server
     socket = new Socket(address, port);
     //send msg to server
     OutputStream os = socket.getOutputStream();
     OutputStreamWriter osw = new OutputStreamWriter(os);
     BufferedWriter bw = new BufferedWriter(osw);
     String request = "data";

     String sendMessage = request + "\n";
     bw.write(sendMessage);
     bw.flush();
     InputStream is = socket.getInputStream();
     InputStreamReader isr = new InputStreamReader(is);
     BufferedReader br = new BufferedReader(isr);
     String message = br.readLine();

这只能意味着您的服务器(您没有在此处发布其代码)在处理一个客户端后已关闭侦听套接字。

如果您不想每次都创建一个新的套接字连接(这可能是合乎逻辑的),则需要保持原始连接打开。有很多网络教程将向您展示执行套接字通信的正确方法。Keepalive与“拒绝连接”无关。