最近学net包下的类.从而结合ui来写出客户端与服务端,一对多的结合.
服务端总体代码有
ServerSocket,socket ,bufferedreader,printWriter.
最后的结束.
在UI界面中的实现.利用多线程来显示客户端的连接.
new Thread() {
public void run() {
ServerSocket server = null;
try {
server = new ServerSocket(port);
UiServer.this.jTextArea1.append("服务启动成功\n");
//监听客户端(一直监听)
while (true) {
//接收信息
Socket client = server.accept();
//使用工具类[实施双方的通讯]
new MuServerSocket(UiServer.this, client).start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
}.start();
在写client端的时候.要注意端口跟服务端的端口一致.而且服务端一个端口只能开一次..将需要连接到的方法分散开来,在ui中实现便捷的操作.
package com.demo.Ui;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
//负责连接服务端,向服务端发送信息的操作
public class SocketClient {
static int port = 9999;
// 创建流
private PrintWriter out = null;
private Socket client = null;
private ClientSocket cs = null;
SocketClient(ClientSocket cs) {
this.cs = cs;
}
public void createConnect(String address,int port){
try {
client=new Socket(address, port);
//获得输出管道
out=new PrintWriter(client.getOutputStream());
this.cs.getTx().setText("连接成功");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
this.cs.getTx().setText("连接失败");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//发送信息
public void sendMags(String str){
out.println(str);
out.flush();
}
//客户端退出
public void close(){
out.println("exit");
out.flush();
out.close();
try {
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
在client的UI界面则忽略显示了.编写client方法的时候已经将各种小功能分散得很清楚了.