客户端程序
import java.awt.Button;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.Box;
import javax.swing.JFrame;
public class Constom extends JFrame implements ActionListener, Runnable{
Button bt01,bt02;
TextField text;
TextArea area;
Thread thread;
Socket socket;
DataInputStream dread;
DataOutputStream dwrite;
Constom()
{
bt01=new Button("连接服务器");
text=new TextField(20);
bt02=new Button("发送");
area=new TextArea();
bt02.setEnabled(false);
bt01.addActionListener(this);
bt02.addActionListener(this);
Box box=Box.createVerticalBox();
box.add(bt01);
box.add(text);
box.add(bt02);
box.add(area);
add(box);
setVisible(true);
setBounds(100, 100, 500, 500);
validate();
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getSource()==bt01)
{
//
// if(socket.isConnected())
// {
//
// }
// else
{
try {
socket=new Socket("127.0.0.1",3888);
// InetAddress address=InetAddress.getByName("127.0.0.1");
// InetSocketAddress socketAddress=new InetSocketAddress(address,3888);
dread=new DataInputStream(socket.getInputStream());
dwrite=new DataOutputStream(socket.getOutputStream());
bt02.setEnabled(true);
thread.start();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if(arg0.getSource()==bt02)
{
String s=text.getText();
String s1=null;
try {
dwrite.writeUTF(s);
s1=dread.readUTF();
area.append(s1+"\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public void run() {
// TODO Auto-generated method stub
String s=null;
while(true)
{
try {
s=dread.readUTF();
area.setText(s+"\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("与服务器断开");
}
}
}
}
服务器程序
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class MySercive {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerSocket sevice = null;
Socket you = null;
DataInputStream dread;
DataOutputStream dwrite;
sThread thread;
while(true)
{
try {
sevice=new ServerSocket(3888);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("正在监听");
e.printStackTrace();
}
try {
System.out.println("等待客户呼叫");
you=sevice.accept();
System.out.println("用户IP:"+you.getInetAddress());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(you!=null)
{
thread=new sThread(you);
thread.start();
}
}
}
}
服务器线程
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.StringTokenizer;
public class sThread extends Thread{
Socket socket;
DataInputStream dread;
DataOutputStream dwrite;
sThread(Socket t)
{
this.socket=t;
try {
dread=new DataInputStream(socket.getInputStream());
dwrite=new DataOutputStream(socket.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
String s=null;
double[] d=new double[3];
int i=0;
while(true)
{
try {
i=0;
s=dread.readUTF();
StringTokenizer fenxi=new StringTokenizer(s,",");
while(fenxi.hasMoreTokens())
{
String temp=fenxi.nextToken();
d[i]=Double.valueOf(temp).doubleValue();i++;
}
System.out.println(s);
dwrite.writeUTF(d[0]+d[1]+d[2]+"");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
效果图片