一般服务器端代码每次收到一个线程一个client就会产生
/************************ 开始监听 **************************/
int port = ;
ServerSocket server = null;//服务器
Socket client = null;//客户端
try {
server = new ServerSocket(port);
} catch (IndirectionException e) {
Systemoutprintln(正在监听);
}
while(true)
{
Systemoutprintln(等待客户+i);
i++;
try {
client = serveraccept();//开始监听线程接收到client
Systemoutprintln(客户地址 + clientgetInetAddress());
} catch (IOException e) {
Systemoutprintln(正在等待客户);
}
}
客户端代码启动之后便会连接服务器得到回应之后便会形成socket连接
Socket clientsocket = null;
try {
clientsocket = new Socket(localhost);
} catch (UnknownHostException e) {
// TODO Autogenerated catch block
eprintStackTrace();
} catch (IOException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
socket的输入和输出一般用流来相互写
inread()和outwrite()
inreadObject()和outwriteObject(object)
客户端的一个线程里面同时new了多个ObjectOutputStream流是不允许的其它的流可以ObjectOutputStream有锁机制
如果是一般的输入和输出流的话用
DateOutputStream out = null;
DateInputStream in = null;
//获得输入输出流
try {
out=new DateOutputStream(socketgetOutputStream());
in=new DateInputStream(socketgetInputStream());
} catch (IOException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
如果是对象上的输入和输出的话用
ObjectOutputStream out = null;
ObjectInputStream in = null;
//获得输入输出流
try {
out=new ObjectOutputStream(socketgetOutputStream());
in=new ObjectInputStream(socketgetInputStream());
} catch (IOException e) {
// TODO Autogenerated catch block
eprintStackTrace();
}
如果复杂之后可以是服务器启动之后对每个客户端启动一个线程与客户端的线程进行交互