TCP编程中,如果要完成通信,通信双方必须要创建socket,通过socket完成通信。
TCP通信步骤
1、服务器启动ServerSocket作为通信的Server端,等待客户端链入。
2、 客户端创建Socket作为通信的Client端
3、Client端链入Server端后建立可靠的、双向的、持续性的、点对点的通讯连接,即可通信。
TCP服务器和客户端的基本创建如下:
服务器:
public static void main(String[] args) { System.out.println("服务器启动。。。"); try { //1.创建服务器 ServerSocket serverSocket=new ServerSocket(9000); //2.连接客户端 Socket accept = serverSocket.accept(); System.out.println(accept.getInetAddress().getHostAddress()+"连入!"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
客户端:
public static void main(String[] args) { System.out.println("客户端运行。。。"); try { //1.创建客户端 Socket socket=new Socket("192.168.2.241",9000); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
客户端向服务器发送一条信息如下:
服务器:
public static void main(String[] args) { System.out.println("服务器启动。。。"); try { //1.创建服务器 ServerSocket serverSocket=new ServerSocket(9000); //2.连接客户端 Socket accept = serverSocket.accept(); System.out.println(accept.getInetAddress().getHostAddress()+"连入!"); //3.读取客户端发来的信息 InputStream inputStream = accept.getInputStream(); int len; byte[] buf=new byte[1024]; len = inputStream.read(buf); String string=new String(buf, 0, len, "UTF-8"); System.out.println("客户端向服务器发来的信息:"+string); //关闭通道 inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
客户端:
public static void main(String[] args) { System.out.println("客户端运行。。。"); try { //1.创建客户端 Socket socket=new Socket("192.168.2.241",9000); //2.向服务器发送数据 OutputStream outputStream=socket.getOutputStream(); String string="Ig niubi"; byte[] buf=string.getBytes("UTF-8"); outputStream.write(buf); socket.shutdownOutput(); System.out.println("信息发送完成!"); outputStream.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }