1.MySocketServer中ServiceThread 类TextArea ListenerMeg=new TextArea();
2.MyClient 中add("Client",textArea);改为add(textArea);
3.ClientSocket = new Socket("qq",8000); qq换成你的ip或你的主机名以上在俺机子上运行通过
2.MyClient 中add("Client",textArea);改为add(textArea);
3.ClientSocket = new Socket("qq",8000); qq换成你的ip或你的主机名以上在俺机子上运行通过
MyClient 中add("Client",textArea);改为add(textArea);
ClientSocket = new Socket("qq",8000); qq换成你的ip或你的主机名
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
public class MySocketServer
{
public static void main(String[] args)
{
ServerService MyServer = new ServerService(8000,10);
}
}
class ServiceThread extends Frame implements Runnable
{
ServerService FatherListener;
Socket ConnectedClient;
Thread ConnectThread;
Panel LIstenerPanel;
TextArea ServerMeg;
public ServiceThread(ServerService sv,Socket s)
{
FatherListener = sv;
ConnectedClient = s;
ConnectThread = new Thread(this);
setTitle("Answer Client");
setLayout(new BorderLayout());
ServerMeg = new TextArea(10,50);
add("Center",ServerMeg);
setResizable(false);
pack();
show();
InetAddress ClientAddress = ConnectedClient.getInetAddress();
ServerMeg.appendText("client connected" + "form\n" + ClientAddress.toString() +".\n");
}
public void run()
{
try
{
DataInputStream in = new DataInputStream(new BufferedInputStream(ConnectedClient.getInputStream()));
PrintStream out = new PrintStream(new BufferedOutputStream(ConnectedClient.getOutputStream()));
out.println("hello!wellcome connent to our server! \r");
out.flush();
String s = in.readLine();
while (! s.equals("Bye"))
{
ServerMeg.appendText("ClientÊäÈëÐÅϢΪ:\n"+ s);
s = in.readLine();
}
ConnectedClient.close();
}
catch(Exception e){}
FatherListener.addMeg("Client" + "closed" + "\n");
dispose();
}
}
class ServerService extends Frame
{
ServerSocket m_sListener;
TextArea ListenerMeg = new TextArea();;
public ServerService(int Port,int Count)
{
try
{
m_sListener = new ServerSocket(Port,Count);
setTitle("Server Listener");
this.addWindowListener(new WinAdpt());
setLayout(new BorderLayout());
add("Center",ListenerMeg);
setResizable(false);
pack();
show();
while(true)
{
Socket Connected = m_sListener.accept();
InetAddress ClientAddress = Connected.getInetAddress();
ListenerMeg.appendText("Client" + "Connected" + "form \n" + ClientAddress.toString() + ".\n");
ServiceThread MyST = new ServiceThread(this,Connected);
MyST.ConnectThread.start();
}
}
catch(IOException e){}
}
public void addMeg(String s)
{
ListenerMeg.appendText(s);
}
}
class WinAdpt extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
((Frame)e.getWindow()).dispose();
System.exit(0);
}
}
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class MyClient extends Frame implements ActionListener
{
Socket ClientSocket;
PrintStream os;
DataInputStream is;
String s;
Label Mylabel = new Label("welcome");
TextArea textArea;
Button MyButton = new Button("send");
public MyClient()
{
setTitle("Client Window");
setLayout(new BorderLayout());
this.addWindowListener(new WinAdptClient(this));
MyButton.addActionListener(this);
textArea = new TextArea(29,50);
add("North",Mylabel);
add("South",MyButton);
add("Center",textArea);
setResizable(false);
pack();
show();
connect();
}
public void connect()
{
try
{
ClientSocket = new Socket("127.0.0.1",8000);
os = new PrintStream(new BufferedOutputStream(ClientSocket.getOutputStream()));
is = new DataInputStream(new BufferedInputStream(ClientSocket.getInputStream()));
s = is.readLine();
textArea.appendText(s+"\n");
}
catch(Exception e){}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==MyButton)
{
//try
{
os.print(textArea.getText());
os.flush();
}
// catch(Exception e){}
}
}
public static void main(String args[])
{
new MyClient();
}
class WinAdptClient extends WindowAdapter
{
MyClient m_Parent;
WinAdptClient(MyClient p)
{
m_Parent = p;
}
public void windowClosing(WindowEvent e)
{
try
{
m_Parent.os.println("Bye");
m_Parent.os.flush();
m_Parent.is.close();
m_Parent.os.close();
m_Parent.ClientSocket.close();
m_Parent.dispose();
System.exit(0);
}
catch(Exception ex){}
}
}
}
这个程序还好的 但是
我还是喜欢 os = new PrintWriter (ClientSocket.getOutputStream());
is = new BufferedReader(new InputStreamReader(ClientSocket.getInputStream()));
还有readLine也不推荐使用
{
//try
{
os.print(textArea.getText());
os.flush();
}
// catch(Exception e){}
改成: if(e.getSource()==MyButton)
{
try
{
os.print(textArea.getText());
os.flush();
}
catch(Exception ex){}
{
try
{
os.print(textArea.getText());
os.flush();
}
catch(Exception ex){}
改成
if(e.getSource()==MyButton)
{
try
{
os.print(textArea.getText());
os.flush();
}
catch(Exception ex){System.out.println(ex);}
看看控制台有何错误信息,俺开始帮你调试时也出现你所说的问题,后来看到有错误,就知道了
好运
给你一个例子(没用户界面的,是命令模式下的通信,自己可以改一下)
import java.net.*;
import java.io.*;
public class myServer{
public static void main(String args[]){
ServerSocket server;
Socket sSocket;
String hStr;
InputStream fIn;
OutputStream fOut;
DataInputStream DIn;
PrintStream hPS;
try{
server=new ServerSocket(4821);
sSocket=server.accept();
System.out.println("the server is on!");
fIn=sSocket.getInputStream();
fOut=sSocket.getOutputStream();
DIn=new DataInputStream(fIn);
hPS=new PrintStream(fOut);
DataInputStream Userin=new DataInputStream(System.in);
while(true){
System.out.println("wait for the client...");
hStr=DIn.readLine();
System.out.println("client say: "+hStr);
if(hStr.trim().equals("exit"))
break;
System.out.print("I say:");
hStr=Userin.readLine();
hPS.println(hStr);
if(hStr.trim().equals("exit"))
break;
}
DIn.close();
hPS.close();
fIn.close();
fOut.close();
sSocket.close();
}catch(Exception e){
System.out.println("err:"+e);
}
}
}
------------------------------------------------------------
import java.net.*;
import java.io.*;public class myClient
{
public static void main(String[] args)
{
Socket socket;
String hStr;
InputStream fIn;
OutputStream fOut;
DataInputStream DIn;
PrintStream hPS;
try{
socket=new Socket("218.197.196.104",4821);
System.out.println("the Client is on");
fIn=socket.getInputStream();
fOut=socket.getOutputStream();
DIn=new DataInputStream(fIn);
hPS=new PrintStream(fOut);
DataInputStream Userin=new DataInputStream(System.in);
while(true){
System.out.print("send message:");
hStr=Userin.readLine();
hPS.println(hStr);
if(hStr.trim().equals("exit"))break;
System.out.println("wait for server message..");
hStr=DIn.readLine();
System.out.println("server says:"+hStr);
if(hStr.trim().equals("exit"))
break;
}
DIn.close();
hPS.close();
fOut.close();
fIn.close();
socket.close();
}
catch(Exception e){
System.out.println("err:"+e);
}
}
}