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