Как написать код на java TCP Сетевое программирование
Привет. Я новичок в сетевом программировании. Я собираюсь написать код для клиента и задать пользователю какой-то вопрос в клиенте, а пользователь также введет выбор, основанный на целочисленном значении. Предположительно, сервер должен возвращать данные пользователя клиенту. Но это не работает. Я надеюсь, что вы, ребята, сможете мне помочь и привести пример. Заранее спасибо.
Что я уже пробовал:
Серверный код
import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class TestServer { private static ServerSocket servSock; private static final int PORT = 1234; public static void main(String[] args) { System.out.println("Opening port...\n"); try { servSock = new ServerSocket(PORT); //Step 1. } catch(IOException ioEx) { System.out.println("Unable to attach to port!"); System.exit(1); } do { handleClient(); } while (true); } private static void handleClient() { Socket link = null; //Step 2. try { link = servSock.accept(); //Step 2. Scanner input = new Scanner(link.getInputStream()); //Step 3. PrintWriter output = new PrintWriter(link.getOutputStream(),true); //Step 3. int numMessages = 50; String message = input.nextLine(); //Step 4. while (!message.equals("***CLOSE***")) { System.out.println("Message received."); numMessages++; output.println("Message " + numMessages + ": " + message); //Step 4. message = input.nextLine(); } output.println(numMessages + " messages received."); //Step 4. } catch(IOException ioEx) { ioEx.printStackTrace(); } finally { try { System.out.println( "\n* Closing connection... *"); link.close(); //Step 5. } catch(IOException ioEx) { System.out.println("Unable to disconnect!"); System.exit(1); } } } }
Клиентский код
package testclient; import java.io.IOException; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class TestClient { private static InetAddress host; private static final int PORT = 1234; public static void main(String[] args) { try { host = InetAddress.getLocalHost(); } catch(UnknownHostException uhEx) { System.out.println("Host ID not found"); System.exit(1); } accessServer(); } private static void accessServer() { Socket link = null; try { link = new Socket(host,PORT); Scanner input = new Scanner(link.getInputStream()); PrintWriter output = new PrintWriter(link.getOutputStream(),true); Scanner userEntry = new Scanner(System.in); String message, response; do { System.out.println("Are you in healthy condition?"); message = userEntry.nextLine(); System.out.println("Are you in happy mode?"); message = userEntry.nextLine(); System.out.println("Are you in sad condition?"); message = userEntry.nextLine(); System.out.println("Are you in sick condition?"); message = userEntry.nextLine(); response = input.nextLine(); System.out.println("\nServer " +response); output.println(message); response = input.nextLine(); System.out.println("\nServer " +response); }while(!message.equals("***CLOSE***")); } catch(IOException ioEx) { ioEx.printStackTrace(); } finally { try { System.out.println("\n*Closing connection...*"); link.close(); } catch(IOException ioEx) { System.out.println("Unable to disconnect..."); System.exit(1); } } } }
ZurdoDev
Почему это не работает?
eddyfy
После того, как я добавил еще один вопрос, он не работает для меня. он не может подключиться к порту
eddyfy
После этого я добавил еще один вопрос, который не работает на сервере.
ZurdoDev
Вы ответили, что не работает. Вы должны ответить, почему. И поскольку мы не можем запустить ваш код, вам нужно сделать некоторую отладку и выяснить, что происходит и почему. Тогда ты сможешь все исправить.
Вы не можете просто позвонить механику и сказать ему, что вы не можете ездить на работу. Вы должны понять, почему.
eddyfy
Я прошу прощения. Но сервер не может подключиться к порту. Таким образом, он не может вернуть обратно пользовательский ввод клиенту