//服务器部分
class Watch extends Thread
{
Index index;
Frame1 f;
Client c;
Watch(Frame1 f,Index index)
{
this.index=index;
this.f=f;
} public void run()
{
try
{
index.socket=index.ss.accept();//程序好象只运行到这里
}
catch(IOException e)
{
f.l1.add(String.valueOf(e.getMessage()));
}
f.l1.add("有新客户连接");//为什么老是不执行这行,与客户连接成功就应该执行啊...
Client c=new Client(index.socket, this.f);
c.start();
while(true)
{
while(index.socket!=null);
try
{
Thread.sleep(400);
}
catch(Exception e)
{}
}
}
}//客户端部分try
{
socket=new Socket("172.18.100.76",4567);
if(socket!=null)
{
f.l.add("connect success");
ps=new PrintStream(socket.getOutputStream());
StringBuffer info=new StringBuffer("fffffffff");
ps.print(info);
ps.flush();
Thread c=new Client(socket,f);
c.start();
}
}
class Watch extends Thread
{
Index index;
Frame1 f;
Client c;
Watch(Frame1 f,Index index)
{
this.index=index;
this.f=f;
} public void run()
{
try
{
index.socket=index.ss.accept();//程序好象只运行到这里
}
catch(IOException e)
{
f.l1.add(String.valueOf(e.getMessage()));
}
f.l1.add("有新客户连接");//为什么老是不执行这行,与客户连接成功就应该执行啊...
Client c=new Client(index.socket, this.f);
c.start();
while(true)
{
while(index.socket!=null);
try
{
Thread.sleep(400);
}
catch(Exception e)
{}
}
}
}//客户端部分try
{
socket=new Socket("172.18.100.76",4567);
if(socket!=null)
{
f.l.add("connect success");
ps=new PrintStream(socket.getOutputStream());
StringBuffer info=new StringBuffer("fffffffff");
ps.print(info);
ps.flush();
Thread c=new Client(socket,f);
c.start();
}
}
好好google一下socket编程的src看看
//----------Frame1.java-----------以下为服务器端
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.List;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.PrintStream;
import java.util.Vector;
class Frame1 implements ActionListener
{
Label clientip;
Label clientname;
Label chatnote;
List l1;
List l2;
Vector client;
Vector chat;
TextField send;
Button refer;
Frame f;
Client c; DataInputStream dis;
PrintStream ps;
public void connect(DataInputStream dis,PrintStream ps)
{
this.ps=ps;
this.dis=dis;
}
public void display()
{
f=new Frame("简易聊天程序服务端");
clientip=new Label("IP");
clientname=new Label("名字");
chatnote=new Label("聊天记录",1);
l1=new List();
l2=new List();
client=new Vector(4);
chat=new Vector(10);
send=new TextField(30);
refer=new Button("发送:");
f.setLayout(new GridLayout(5,1));
Panel p1,p2;
p1=new Panel();
p2=new Panel();
p1.add(clientip);
p1.add(clientname);
p2.add(send);
p2.add(refer);
f.add(p1);
f.add(l1);
f.add(chatnote);
f.add(l2);
f.add(p2);
refer.addActionListener((ActionListener) this);
f.setLocation(310,180);
//f.setSize(563,456);
f.pack();
f.addWindowListener(new Wind());
f.show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==refer)
{
try
{ //dis=new DataInputStream(getInputStream());
//ps=new PrintStream(getOutputStream());
ps.print(send.getText());
l2.add(String.valueOf(send.getText()));
send.setText("");
}
catch(Exception ex)
{
l2.add("yicahng");
send.setText(ex.getMessage());
}
}
}
}class Wind extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
//-------------Client.java---------
import java.net.Socket;
import java.io.*;
class Client extends Thread
{
Socket socket;
Frame1 f;
String getstr;
String ip;
DataInputStream dis;
PrintStream ps;
public Client(Socket socket,Frame1 f)
{
this.socket=socket;
this.f=f;
try
{
dis=new DataInputStream(socket.getInputStream());
ps=new PrintStream(socket.getOutputStream());
String info=dis.readLine();
f.l2.add(info);
f.connect(dis,ps);
}
catch(Exception e)
{
//f.l2.add(String.valueOf(e.getMessage()));
}
}
public void run()
{
while(true)
{
String line=null;
try
{
line=dis.readLine();
f.l2.add(line);
}
catch(Exception ex)
{
//f.l2.add(String.valueOf(ex.getMessage()));
}
try
{
Thread.sleep(400);
}
catch(Exception ex)
{
}
}
}
}
//---------------Watch.java-----------class Watch extends Thread
{
Index index;
Frame1 f;
Client c;
int i;
Watch(Frame1 f,Index index)
{
this.index=index;
this.f=f;
index.socket=null;
i=0;
}
public void run()
{
try
{
while(i<10)
{
try
{
index.socket=index.ss.accept();//这里有错误..
i++;
}
catch(Exception e)
{
//f.l1.add(String.valueOf(e.getMessage()));
}
Client c=new Client(index.socket, this.f);//为每一个连接的的用户分一个线程
c.start();
try
{
Thread.sleep(400);
}
catch(Exception ex)
{}
}
}
catch(Exception e)
{
}
}
}
//-------------------Index.java------------
import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;
public class Index
{
ServerSocket ss;
Socket socket;
Watch watch;
String str;
public static void main(String arg[])
{
Frame1 f=new Frame1();//构造框架
Index index=new Index();
try
{
f.display();//显示框架
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
try
{
ServerSocket ss=new ServerSocket(4567);
f.l2.add("开始启动....");
}
catch(Exception e)
{
}
Watch watch=new Watch(f,index);
watch.start();//启动等待客户请求的线程
f.l2.add("已经启动");
f.l2.add("正在等待客户的连接");
}
}
//--------------Frame1.java------以下为客户端
import java.awt.*;
import java.awt.event.*;
import java.awt.List;
import java.io.DataInputStream;
import java.io.PrintStream;
import java.util.*;public class Frame1 implements ActionListener
{
index i;
Frame f;
Label ip,username;
Button connect,sent;
List l;
Vector v;
TextField textip,textusername,word;
DataInputStream dis;
PrintStream ps;
public void conn(DataInputStream dis,PrintStream ps)
{
this.dis=dis;
this.ps=ps;
}
public void display()
{
f=new Frame("简易聊天程序客户端");
Panel p1,p2;
ip=new Label("服务器端IP");
username=new Label("用户名");
connect=new Button("连接");
//connect.addActionlistener(this);
sent=new Button("发送");
sent.addActionListener(this);
l=new List();
textip=new TextField(20);
textusername=new TextField();
word=new TextField();
p1=new Panel();
p2=new Panel();
p1.setLayout(new GridLayout(2,3));
p1.add(ip);
p1.add(textip);
p1.add(new Label());
p1.add(username);
p1.add(textusername);
p1.add(connect);
p2.setLayout(new GridLayout(1,2));
p2.add(word);
f.setLayout(new GridLayout(4,1));
f.add(p1);
f.add(l);
//f.setSize(563,456);
f.setLocation(356,150);
f.add(p2);
f.add(sent);
f.pack();
f.addWindowListener(new Wind());
f.show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==sent)
{
try
{ ps.print(String.valueOf(word.getText()));
l.add(String.valueOf(word.getText()));
word.setText("");
}
catch(Exception ex)
{
l.add(ex.getMessage());
}
}
}
}
class Wind extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
//----------------Client.java--------
import java.net.Socket;
import java.io.*;
class Client extends Thread
{
Socket socket;
Frame1 f;
String getstr;
String ip;
DataInputStream dis;
PrintStream ps;
public Client(Socket socket,Frame1 f)
{
this.socket=socket;
this.f=f;
try
{
dis=new DataInputStream(socket.getInputStream());
ps=new PrintStream(socket.getOutputStream());
f.conn(dis, ps);
String info=dis.readLine();
f.l.add(info);
}
catch(Exception e)
{
f.l.add(String.valueOf(e.getMessage()));
}
}
public void run()
{
while(true)
{
String line=null;
try
{
line=dis.readLine();
f.l.add(line);
}
catch(Exception ex)
{
//f.l.add(String.valueOf(ex.getMessage()));
}
try
{
Thread.sleep(400);
}
catch(Exception e)
{
}
}
}
}
//------------------Index.java------------import java.net.*;
import java.io.*;
public class index
{
public static void main(String arg[])
{
Frame1 f=new Frame1();
f.display();
Socket socket=null;
int m=0;
PrintStream ps;
DataInputStream dis;
while(socket==null)
{
try
{
socket=new Socket("localhost",4567);
if(socket!=null)
{
f.l.add("connect success");
ps=new PrintStream(socket.getOutputStream());
StringBuffer info=new StringBuffer("fffffffffffffffffff");
ps.print(info);
ps.flush();
Thread c=new Client(socket,f);
c.start();
}
else
f.l.add("connect fial");
}
catch(Exception e)
{
f.l.add(e.getMessage());
}
try{
Thread.sleep(100);
}
catch(Exception e)
{}
}
}
}
主函数在Index.java里
Frame.java 的对象是框架
Watch .java里循环等待客户发来的请求
client.java是 收发数据的chatprogram_client是客户端
和chatprogram 一样