import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import java.text.*;public class ServerUI extends JFrame {
final JTextArea mainArea; JTextArea sendArea; JTextField indexArea; MainServer server;

JLabel indexlabel; public void setServer(MainServer server) {
this.server = server;
} public ServerUI() {
Container contain = getContentPane();
contain.setLayout(new BorderLayout());
mainArea = new JTextArea();
mainArea.setLineWrap(true);
mainArea.setEditable(false);
JScrollPane mainAreaP = new JScrollPane(mainArea); JPanel panel = new JPanel();
panel.setLayout(new BorderLayout()); JPanel tmpPanel = new JPanel();
indexlabel=new JLabel("当前客户数:");
indexArea = new JTextField(2);
indexArea.setText("0");
tmpPanel.add(indexlabel);
tmpPanel.add(indexArea); panel.add(tmpPanel); contain.add(mainAreaP, BorderLayout.CENTER);
contain.add(panel, BorderLayout.SOUTH);


try {
         UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
         SwingUtilities.updateComponentTreeUI(this);
            pack();
        }  
        catch( Exception e1 ) {
           System.out.println ("Look and Feel Exception");
           System.exit(0);
        }
        try{
         InetAddress inet=InetAddress.getLocalHost();
String a=inet.getHostAddress().toString();
setTitle("服务器:"+a);
        }catch(Exception ex){
         System.out.println(ex);
        }
        setSize(300, 250);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
ServerUI ui = new ServerUI();
MainServer server = new MainServer(ui);
}
}class MainServer {
Socket[] threads; ThreadServer[] client = new ThreadServer[60]; ServerSocket soc; int count; ServerUI ui;

String[] s;

DatagramSocket ip_data ;
DatagramPacket pack;
byte data[] = new byte[8192]; public MainServer(ServerUI ui) {
this.ui = ui;
ui.setServer(this);
threads = new Socket[60];
try {
soc = new ServerSocket(6666);
ip_data = new DatagramSocket(7777);
} catch (Exception e) {
System.out.println(e);
}
count = 0;
accept();
} int searchIndex() {
for (int i = 0; i < 60; i++)
if (client[i] == null)
return i;
return -1;
} public void accept() {
try {
while (true) {
int i = searchIndex();
if (i == -1)
continue;
threads[i] = soc.accept();
client[i] = new ThreadServer(this, threads[i], ui, i);
String a=Integer.toString(++count);
ui.indexArea.setText(a);
pack = new DatagramPacket(data, data.length);
}
} catch (Exception e) {
System.out.println(e);
}
}
}class ThreadServer extends Thread {
int port; Socket client;

ThreadServer ts; BufferedReader in; PrintWriter out; ServerUI ui; int index; MainServer server;
DatagramSocket ip_data ;
DatagramPacket pack;

byte data[] = new byte[8192];

public ThreadServer(MainServer server, Socket socket, ServerUI ui, int index) {
this.server = server;
this.index = index;
this.ui = ui;
this.port = port;
this.client = socket;

try {
SimpleDateFormat datef = new SimpleDateFormat("hh:mm:ss");
String s = datef.format(new Date());
System.out.println("启动服务器成功,等待端口号:" + port);
ui.mainArea.append(s+" 连接成功!来自" + client.toString()+"\n");
in = new BufferedReader(new InputStreamReader(client
.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch (Exception ex) {
System.out.println(ex);
}start();
} public void run() {
String msg = " ";
String tip = " ";

while (true) {
try {
msg = in.readLine();
server.ip_data.receive(server.pack);
tip = new String(server.pack.getData(), 0, server.pack.getLength());
for(int i=0;i<60;i++){
if(tip.equals(server.threads[i].getInetAddress().toString())){
server.client[i].sendMsg(msg);
}
}

} catch (SocketException ex) {
SimpleDateFormat datef = new SimpleDateFormat("hh:mm:ss");
String s = datef.format(new Date());
ui.mainArea.append(s+" 用户:"+server.threads[index].getInetAddress().toString()+"已断开连接!"+"\n");
server.client[index] = null;
String b=Integer.toString(--server.count);
ui.indexArea.setText(b);
break;

} catch (Exception ex) {
System.out.println(ex);
}

if (msg != null && msg.trim() != "") {
ui.mainArea.append(msg + "\n");
}
}
} public void sendMsg(String msg) {
try {
out.println(msg);
} catch (Exception e) {
System.out.println(e);
}
}
}
这个是服务器的代码,为什么用127段IP测试时,服务端可以接收到由客户端发来的信息,可是真正用别人电脑测试的时候,就只能连接到,可是接收不到信息呢?