这是我的服务器。顺便说一句,我正在使用JFrame。其实我有很多电脑的时候,我在PC 1上运行服务器,然后在PC 2和PC 3上的客户端。PC 3客户端连接,但服务器无法接收消息。 pc 2客户端已连接。如何使用1台服务器执行多个客户端?
package server;
import java.net.*;
import java.io.*;
public class FrmServer extends javax.swing.JFrame {
ServerSocket providerSocket;
Socket connection=null;
ObjectOutputStream out;
ObjectInputStream in;
String message;
//To run the connection
public void run(){
用于连接
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