客户端收不到服务器端的信息.(两个用户)
哪位大哥有类似的例子.给小弟一份看呀.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