Не совсем уверен, почему вам нужно использовать nio, если вы не собираетесь обрабатывать несколько соединений.Я не вижу смысла в их использовании.
Хорошо, здесь идет: Дайте мне знать, если это работает.
Код сервера:
public class Server {
ServerSocket socket;
Socket listener;
public Server(int port) throws IOException {
socket = new ServerSocket(port);
}
public void connect() throws IOException{
listener = socket.accept();
}
public String read() throws IOException{
byte[] temp = new byte[1024];
int bytesRead = 0;
try(InputStream input = listener.getInputStream()){
bytesRead = input.read(temp);
}
return new String(temp,0,bytesRead,"ASCII");
}
public void write(String data) throws IOException{
byte[] temp = new byte[1024];
try(OutputStream out = listener.getOutputStream()){
out.write(data.getBytes());
out.flush();
}
}
public void close(){
socket.close();
}
}
Код клиента:
public class Client{
Socket client;
InetSocketAddress addr;
public Client(String ip, int port) throws IOException{
client = new Socket();
addr = new InetSocketAddress(ip,port);
}
public void connect() throws IOException{
client.connect(addr);
}
public String read() throws IOException{
byte[] temp = new byte[1024];
int bytesRead = 0;
try(InputStream input = client.getInputStream()){
bytesRead = input.read(temp);
}
return new String(temp,0,bytesRead,"ASCII");
}
public void write(String data) throws IOException{
byte[] temp = new byte[1024];
try(OutputStream out = client.getOutputStream()){
out.write(data.getBytes());
out.flush();
}
}
public void close(){
client.close();
}
}
Теперь все, что вам нужно сделать, это вызвать connect () на сервере, а затем connect () наклиент и писать и отправлять сообщения, которые вы хотите.
Не забудьте позвонить близко после того, как вы все сделали.
Также имейте в виду, что вам понадобится какой-то механизм, чтобы сообщитьсервер и клиент, как долго каждое сообщение будет.Или вы можете указать конечный символ, который сообщает клиенту / серверу, что сообщение окончено.
Одна отправка на сервере не обязательно равна считыванию на клиенте и наоборот.Вам придется выяснить, что делать.