socket

package socket;

import java.net.*;

public class Client {
 public static void main(String args[]) throws Exception {
  final int length = 5;
  String host = "localhost";
  int port = 8000;
  Socket[] sockets = new Socket[length];
  for (int i = 0; i < length; i++) { // 试图建立5次连接
   sockets[i] = new Socket(host, port);
   sockets[i].getOutputStream().write(i+1);
   System.out.println("第" + (i + 1) + "次连接成功");
  }
  Thread.sleep(3000);
  for (int i = 0; i < length; i++) {
   sockets[i].close(); // 断开连接
  }
 }
}

 

package socket;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Server {
 private int port = 8000;
 private ServerSocket serverSocket;

 public Server() throws IOException {
  serverSocket = new ServerSocket(port);
  Date nowTime=new Date();
  SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  System.out.println("###########服务器启动:"+time.format(nowTime)+"############");
 }

 public void service() {
  while (true) {
   Socket socket = null;
   try {
    socket = serverSocket.accept(); // 接收客户连接
    Thread workThread = new Thread(new WorkThread(socket)); // 创建一个工作线程
    workThread.start(); // 启动工作线程
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

 public static void main(String args[]) throws IOException {
  new Server().service();
 }
}

 

 

package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

class WorkThread implements Runnable { // 负责与单个客户的通信
 private Socket socket;

 public WorkThread(Socket socket) {
  this.socket = socket;
 }

 private BufferedReader getReader(Socket socket)throws IOException{
  BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  return br;
 }


 public void run() {
  try {
   int c = socket.getInputStream().read();
   System.out.println(c);
   Thread.sleep(1);
   System.out.println("connection 【"+c+"】 accepted "
     + socket.getInetAddress() + ":" + socket.getPort());
   BufferedReader br = getReader(socket);
   String msg = null;
   while ((msg = br.readLine()) != null) { // 接收和发送数据,直到通信结束
    System.out.println(msg);
    if (msg.equals("bye"))
     break;
   }
  } catch (IOException e) {
   e.printStackTrace();
  } catch (InterruptedException e) {
   e.printStackTrace();
  } finally {
   try {
    if (socket != null)
     socket.close(); // 断开连接
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }
}

你可能感兴趣的:(socket)