Я просто хочу играть в сетевую игру и вам нужно общение между Client Start... Server Yes... Client Дайте мне карты... (Сервер не отвечает на этот код, и если мне нужно создать всегда новый сокет, как я получит тот же адрес.... localhost просто для цели тестирования) Сокет работает только один раз Я не могу понять, почему????????
Я слушаю на сервере, пока он прав, но он получает только одну строку и не получает ничего в следующей попытке....
сервер просто слушает и читает
package client;
import java.net.*;
import java.io.*;
public class Client {
Client() {
try {
Socket socket = new Socket("localhost",2222);
int i=0;
while(i<100){
i++;
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os,true);
pw.println(i);
}
} catch(IOException e){
System.out.println("Client Constructor Exception");
}
}
public static void main(String[] args) throws Exception{
Client client = new Client();
}
}
Код сервера - это..... пожалуйста, помогите мне
package server;
import java.io.*;
import java.net.*;
public class Server {
Server() {
try{
serverSocket = new ServerSocket(2222);
} catch(IOException e) {
System.out.println("IOException in Server Constructor");
}
}
public void operate() {
try{
// Control control = new Control();
while (true) {
socket = serverSocket.accept();
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.println(br.readLine());
//control.recieve(socket, br.readLine());
}
} catch(IOException e) {
System.out.println("IOException in Server operate function");
}
}
public Socket getSocket() {
return socket;
}
public static void main(String[] args) throws IOException {
Server server = new Server();
server.operate();
}
private ServerSocket serverSocket;
private Socket socket;
}
Выход:
запустить: запустить
почему он не работает 100 раз.....
В коде сервера вам необходимо переместить server.accept() вне цикла. Попробуй это. Это сработает. Наряду с этим я попытался с мгновенным ответом с сервера.
серверный код.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private ServerSocket serverSocket;
private Socket socket;
Server() {
try {
serverSocket = new ServerSocket(2222);
} catch (IOException e) {
System.out.println("IOException in Server Constructor");
}
}
public void operate() {
try {
// Control control = new Control();
socket = serverSocket.accept();
while (true) {
System.out.println("Server starts listening on "
+ serverSocket.getLocalPort());
System.out.println("Server accepts connection.");
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os, true);
pw.println("Hi Client");
// Thread.sleep(1000);
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.println(br.readLine());
System.out.println("reply sent to client");
// control.recieve(socket, br.readLine());
}
} catch (IOException /*| InterruptedException*/ e) {
System.out.println("IOException in Server operate function");
}
}
public Socket getSocket() {
return socket;
}
public static void main(String[] args) throws IOException {
Server server = new Server();
server.operate();
}
}
Код клиента:
package com.java.examples;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
Client() {
try {
Socket socket;
socket = new Socket("localhost",2222);
// InputStream in = socket.getInputStream();
while (true) {
// socket = new Socket("localhost", 2222);
System.out.println("Socket - " + socket.getLocalPort());
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
PrintWriter pw = new PrintWriter(os, true);
pw.println("Hi Server");
// Thread.sleep(2000);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.println("Waiting for server reply..");
System.out.println(br.readLine());
System.out.println("Got reply from server..");
// pw.flush();
}
} catch (IOException/* | /*InterruptedException*/ e) {
e.printStackTrace();
System.out.println("Client Constructor Exception");
}
}
public static void main(String[] args) throws Exception {
Client client = new Client();
}
}
Вы создаете новый сокет каждый раз внутри цикла, вы хотите получить
socket = new Socket("localhost",2222);
вне бесконечного цикла
Socket socket = new Socket("localhost",2222);
OutputStream os=null;
PrintWriter pw=null;
while(true){
os = socket.getOutputStream();
pw = new PrintWriter(os,true);
pw.println("Start");
pw.flush(); // to empty the writer buffer
}
Socket socket = new Socket("localhost",2222);
OutputStream os=null;
PrintWriter pw=null;
while(true){
os = socket.getOutputStream();
pw = new PrintWriter(os,true);
pw.println("Start");
}