У меня есть программа, которая слушает подключения от клиента.Связь с сервером/клиентом
import java.io.*;
import java.net.*;
class SocketExampleServer {
public static void main(String [] args) throws Exception {
int port = 5665;
ServerSocket ss = new ServerSocket(port);
System.out.println("Waiting incoming connection...");
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
DataOutputStream out = new DataOutputStream(s.getOutputStream());
String x = null;
try {
while ((x = dis.readUTF()) != null)
{
System.out.println(x);
out.writeUTF(x.toUpperCase());
}
}
catch(IOException e)
{
System.err.println("Client closed its connection.");
}
catch(Exception e)
{
System.err.println("Unknown exception");
}
s.close();
ss.close();
dis.close();
out.close();
System.exit(0);
}
}
То, что в данный момент
System.out.println(x);
out.writeUTF(x.toUpperCase());
выполняется только вторая линия. Если вы обмениваете строку после усиления, выполняется только вторая строка. В чем причина этого? И еще одна вещь, когда я запускаю программу второй раз, когда он выдает эту ошибку:
Exception in thread "main" java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at SocketExampleServer.main(SocketExampleServer.java:9)
После того, как изменить номер порта на новый он работает на один раз, и в следующий раз вам нужно обновить порт номер, если вы хотите запустить его снова. У меня не было причины, по которой я закрываю сокет, и, по-моему, порт останется свободным для следующего запуска.
[Посмотрите на фактические порты] (http://www.petri.co.il/quickly_find_local_open_ports.htm), возможно, вы увидите, какой процесс поддерживает привязку сокетов. –