これは私のサーバーです。私は途中でJFrameを使用しています。実際には、私は多くのPCを持っている私は、PC 1でサーバーを実行してから、PC 2とPC 3にあるクライアントを接続します.PC 3クライアントは接続しますが、サーバーはメッセージを受信できません。 PC 2クライアントが接続している間。あなたは、各ソケット(クライアント)のスレッドのために作る、およびそれらを処理する必要があります接続1台のサーバーで複数のクライアントを実行するにはどうすればよいですか?
try{
providerSocket = new ServerSocket(9090);
msgArea.append("Waiting for connection....");
connection = providerSocket.accept();
out = new ObjectOutputStream(connection.getOutputStream());
out.flush();
in = new ObjectInputStream(connection.getInputStream());
sendmessage("Connection is successful...");
while(true){
message = (String)in.readObject();
if(!message.isEmpty())
msgArea.append("\nClient: "+message);
}
}
catch(Exception e){
}
}
public void sendmessage(String msg){
try{
out.writeObject(msg);
out.flush();
msgArea.append("\nServer: "+msg);
}catch(Exception e){
}
}
/**
* Creates new form FrmServer
*/
public FrmServer() {
initComponents();
}
private void btnSendActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
sendmessage(txt.getText());
}
public static void main(String args[]) {
FrmServer s = new FrmServer();
s.setVisible(true);
s.run();
}
クライアント
package client;
import java.net.*;
import java.io.*;
public class FrmClient extends javax.swing.JFrame {
Socket requestSocket;
ObjectInputStream in;
ObjectOutputStream out;
String message;
/**
* Creates new form FrmClient
*/
public FrmClient() {
initComponents();
}
public void run(){
try{
requestSocket = new Socket("10.99.225.12",9090);
msgArea.append("Connected to the server...");
out = new ObjectOutputStream(requestSocket.getOutputStream());
out.flush();
in = new ObjectInputStream(requestSocket.getInputStream());
while(true){
message = (String)in.readObject();
if(!message.isEmpty());
msgArea.append("\nServer: "+message);
}
}
catch(Exception e){
}
}
public void sendmessage(String msg){
try{
out.writeObject(msg);
out.flush();
msgArea.append("\nClient: "+msg);
}
catch(Exception e){
}
}
private void btnSendActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
sendmessage(txt.getText());
}
private void formWindowClosing(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
try{
sendmessage("Got to go.. Goodbye!");
in.close();
out.close();
requestSocket.close();
}
catch(Exception e){
}
}
public static void main(String args[]) {
FrmClient c = new FrmClient();
c.setVisible(true);
c.run();
}
あなたはq個のマルチスレッドをタグ付け。だから、あなたは明らかにその答えをすでに知っているでしょう... – Fildor
このチュートリアルの最後(http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html)で、簡単な例を見つけることができますそれをやる。 – PeterMmm