Я уже некоторое время работаю над этим и натолкнулся на кирпичную стену. Я пробовал много гуглить, но все по этой теме не на сервере или об использовании API. Я хочу придерживаться базового использования пакетов Java.
Я стремлюсь к тому, чтобы два клиента могли отправлять сообщения туда и обратно, просто в консоли внутри Eclipse пока что. Я знаю, что мне придется реализовать потоки на сервере для обработки двух соединений, и, вероятно, мне придется написать протокол для сервера.
Кто-нибудь может дать мне какие-либо указания на это? Помощь очень ценится
Вот что у меня есть
Клиент
import java.io.*;
import java.net.*;
public class Client
{
static Socket client;
static String input;
static DataInputStream in;
static DataOutputStream out;
static BufferedReader keyboard;
//constructor, instantiation.
static void Open()
{
try
{
client = new Socket("127.0.0.1", 6666);
InputStream sin = client.getInputStream();
OutputStream sout = client.getOutputStream();
in = new DataInputStream(sin);
out = new DataOutputStream(sout);
}
catch (UnknownHostException e) {
System.err.println("Don't know about host: taranis.");
System.exit(1);
}
catch (IOException e) {
System.err.println("Couldn't get I/O for " + "the connection to: Host.");
System.exit(1);
}
keyboard = new BufferedReader(new InputStreamReader(System.in));
}
//close
static void Close() throws IOException
{
client.close();
keyboard.close();
in.close();
out.close();
}
public static void main(String[] args) throws IOException
{
Open();
while(true)
{
// wait for the user to type in something and press enter.
input = keyboard.readLine();
// send the above line to the server.
out.writeUTF(input);
out.flush();
// wait for the server to send a line of text.
input = in.readUTF();
System.out.println("The server was very polite. It sent me this : " + input);
System.out.println();
}
}
}
Хост
import java.net.*;
import java.io.*;
public class Host
{
//static variables
static ServerSocket host;
static Socket client;
static HostProtocol hp;
static String input1, output2;
static InputStream sin;
static OutputStream sout;
static DataInputStream in;
static DataOutputStream out;
//constructor
public Host() throws IOException
{
hp = new HostProtocol();
Open();
sin = client.getInputStream();
sout = client.getOutputStream();
in = new DataInputStream(sin);
out = new DataOutputStream(sout);
}
//open sockets, instantiate variables
public static void Open()
{
try
{
host = new ServerSocket(6666);
}
catch (IOException e)
{
System.err.println("Could not listen on port: 6666.");
System.exit(1);
}
try
{
client = host.accept();
}
catch (IOException e)
{
System.err.println("Accept failed.");
System.exit(1);
}
}
//close method
public static void Close () throws IOException
{
out.close();
client.close();
host.close();
}
//main method
public static void main(String[] args) throws IOException
{
Host serverhost = new Host();
input1=in.readUTF();
}
}