首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

客户端收不到服务器端的信息.(两个用户),该怎么解决

2012-01-22 
客户端收不到服务器端的信息.(两个用户)哪位大哥有类似的例子.给小弟一份看呀.huoyan190@sina.comQQ:57305

客户端收不到服务器端的信息.(两个用户)


哪位大哥有类似的例子.给小弟一份看呀.huoyan190@sina.com   QQ:573057075

服务器端:TcpServers   .java
====================================================================
import   java.net.*;
import   java.io.*;
import   java.awt.*;
import   java.awt.Toolkit;
import   javax.swing.*;
import   javax.swing.Box;
import   java.awt.event.ActionEvent;
import   java.awt.event.ActionListener;

public   class   TcpServers   extends   JFrame   implements   ActionListener
{
JFrame   frame;
JPanel   contentpane,panel2;
JTextArea     textarea;
JScrollPane   panel3;
JButton   allowLink;
JButton   send;
JButton   button;
JLabel   message;
JLabel   kehu;
JTextField     textField;
JComboBox   box1;
ServerSocket   server;
Socket   connection;
InputStream   is;
OutputStream   os;
BufferedReader   br;
PrintWriter   pw;
String   client;
InetAddress   client1,client2;
int   port1,port2;

TcpServers()
{
frame=new   JFrame( "服务器端 ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setSize(450,300);

contentpane=new   JPanel();
panel2=new   JPanel();


textarea=new   JTextArea(15,10);
panel3=new   JScrollPane(textarea);

allowLink=new   JButton( "接受连接 ");

send=new   JButton( "发送 ");
send.addActionListener(this);
textField=new   JTextField(20);
box1=new   JComboBox();

message=new   JLabel( "消息   : ");
kehu=new   JLabel( "客户端   : ");

Toolkit   kit   =   Toolkit.getDefaultToolkit();
Image   image   =   kit.getImage( "Ghosthuo.jpg ");
frame.setIconImage(image);


        Box   hbox1   =   Box.createHorizontalBox();
        hbox1.add(allowLink);
        allowLink.addActionListener(this);
        //   添加一个20像素的支柱
        hbox1.add(Box.createHorizontalStrut(20));
        hbox1.add(message);
        hbox1.add(Box.createHorizontalStrut(20));
        hbox1.add(textField);    

      Box   hbox2   =   Box.createHorizontalBox();
      hbox2.add(Box.createHorizontalStrut(105));        
      hbox2.add(kehu);
        //   添加一个20像素的支柱
        hbox2.add(Box.createHorizontalStrut(8));
        hbox2.add(box1);
        hbox2.add(Box.createHorizontalStrut(20));
        hbox2.add(send);
        Box   vbox   =   Box.createVerticalBox();
        vbox.add(hbox1);
        vbox.add(hbox2);

frame.setContentPane(contentpane);
contentpane.setLayout(new   BorderLayout());
contentpane.add(vbox,BorderLayout.NORTH);
contentpane.add(panel3,BorderLayout.CENTER);

frame.setSize(450,300);
frame.setVisible(true);
frame.pack();
serverStart();


}

public   void   actionPerformed(ActionEvent   event)
{
System.out.println( "ha   ha   ");
JButton   button   =   (JButton)event.getSource();
if(button==   allowLink)
{
Thread   t1=null;
Thread   t2=null;
try
{
allowLink.setEnabled(false);
while(true)
{
connection=server.accept();
textarea.append( "LocalPort;   "+server.getLocalPort()+ "\n ");
if(t1==null)
{
client1=connection.getInetAddress();
box1.addItem(client1);
textarea.append( "client1   has   connected:   "+client1+ "\n ");
port1=connection.getPort();
textarea.append( "Port: "+port1+ "\n ");
t1=new   Thread(new   receiver(), "client1 ");
t1.start();
}
else
{
client2=connection.getInetAddress();
box1.addItem(client2);
textarea.append( "client2   has   connected: "+client2+ "\n ");
port2=connection.getPort();
textarea.append( "Port   : "+port2+ "\n ");
t2=new   Thread(new   receiver(), "client2 ");
t2.start();
break;
}
}
}
catch(Exception   ex)
{
JOptionPane.showMessageDialog(frame, "Error:   "+ex.toString());
}

}

else   if(button   ==   send)
{
Socket   soc;
OutputStream   os;
PrintWriter   pw;
String   set;
if((client1!=null)||(client2!=null))
{
try
{
set=textField.getText()+ "\n ";
if(box1.getSelectedItem().toString().equals(client1.toString()))
{
soc=new   Socket(client1,6666);
textarea.append( "To   client1: "+set);
}
else
{
soc=new   Socket(client2,6666);
textarea.append( "To   client2: "+set);
}
os=soc.getOutputStream();
pw=new   PrintWriter(os);
pw.write(set);
pw.flush();
set= " ";
textField.setText( " ");
}
catch(Exception   ex)
{
JOptionPane.showMessageDialog(frame, "Error: "+ex.toString());
}
}
else
JOptionPane.showMessageDialog(frame, "NO   Client! ");
}

}


public   void   serverStart()
{
try
{
server=new   ServerSocket(6666);
System.out.println( "222222222222 ");
}
catch(Exception   e)
{
JOptionPane.showMessageDialog(this, "Error:   "+   e.toString());
}
}


class   receiver   implements   Runnable
{
InputStream   is;
BufferedReader   br;
public   receiver()
{
try
{
is=connection.getInputStream();
br=new   BufferedReader(new   InputStreamReader(is));
}
catch(Exception   ex)
{
}
}
public   void   run()
{
String   get= " ";
while(true)
{
try
{
get=br.readLine();
if(!get.equals( "e "))
{
textarea.append( "From   "+Thread.currentThread().getName()+ ": "+get+ "\n ");
}
else


{
is.close();
br.close();
connection.close();
if(Thread.currentThread().getName().equals( "client1 "))
{
box1.removeItem(client1.toString());
client1=null;
try{Thread.currentThread().interrupt();}
catch(SecurityException   e){}
}
else
{
box1.removeItem(client2);
}
}
}
catch(Exception   ex){}
}
}
}

public   static   void   main(String[]   args)  
{
//   TODO:   在这添加你的代码
new   TcpServers();
}

}


[解决办法]
多用户就多线程呗
[解决办法]
例子 测试成功
/**
@version 1.20 2004-08-03
@author Cay Horstmann
*/

import java.io.*;
import java.net.*;
import java.util.*;

/**
This program makes a socket connection to the atomic clock
in Boulder, Colorado, and prints the time that the
server sends.
*/
public class SocketTest
{
public static void main(String[] args)
{
try
{
Socket s = new Socket( "127.0.0.1 ", 8189);
try
{
InputStream inStream = s.getInputStream();
Scanner in = new Scanner(inStream);

while (in.hasNextLine())
{
String line = in.nextLine();
System.out.println(line);
}
}
finally
{
s.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
/**
@author Cay Horstmann
@version 1.20 2004-08-03
*/

import java.io.*;
import java.net.*;
import java.util.*;

/**
This program implements a multithreaded server that listens to port 8189 and echoes back
all client input.
*/
public class ThreadedEchoServer
{
public static void main(String[] args )
{
try
{
int i = 1;
ServerSocket s = new ServerSocket(8189);

while (true)
{
Socket incoming = s.accept();
System.out.println( "Spawning " + i);
Runnable r = new ThreadedEchoHandler(incoming, i);
Thread t = new Thread(r);
t.start();
i++;
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}

/**
This class handles the client input for one server socket connection.
*/
class ThreadedEchoHandler implements Runnable
{
/**
Constructs a handler.
@param i the incoming socket
@param c the counter for the handlers (used in prompts)
*/
public ThreadedEchoHandler(Socket i, int c)
{
incoming = i; counter = c;
}

public void run()
{
try
{
try
{
InputStream inStream = incoming.getInputStream();
OutputStream outStream = incoming.getOutputStream();

Scanner in = new Scanner(inStream);
PrintWriter out = new PrintWriter(outStream, true /* autoFlush */);



out.println( "Hello! Enter BYE to exit. " );

// echo client input
boolean done = false;
while (!done && in.hasNextLine())
{
String line = in.nextLine();
out.println( "Echo: " + line);
if (line.trim().equals( "BYE "))
done = true;
}
}
finally
{
incoming.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}

private Socket incoming;
private int counter;
}



[解决办法]
google之
[解决办法]
学习一下
[解决办法]
我给你发了一份,记得给我分!

lixiaoxue85(蛮野蛮) ( ) 信誉:97 Blog
写的就是多线程

再就是连接不上不止跟你的程序有关,还跟你的端口是否打开有关
[解决办法]
up

热点排行