码迷,mamicode.com
首页 > 其他好文 > 详细

网络编程 TCP

时间:2021-02-19 13:05:37      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tde   buffer   image   system   http   tcp   host   unknown   客户   

TCP网络编程分为客户端和服务端

客户端使用 Socket类

服务端使用 ServerSocket类

★TCP实现聊天

1.客户端 TcpClientDemo01.java

package com.ckfuture;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

//客户端
public class TcpClientDemo01 {
    public static void main(String[] args) {

        Socket socket=null;
        OutputStream os=null;
        try {
            //1.要知道服务器地址,端口号
            InetAddress serverIP = InetAddress.getByName("127.0.0.1");
            int port=9999;
            //2.创建一个socket连接
            socket = new Socket(serverIP,port);
            //3.发送消息
            os = socket.getOutputStream();
            os.write("你好,欢迎创客未来".getBytes());

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(os!=null){
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(socket!=null){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2.服务器  TcpServerDemo01.java

package com.ckfuture;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

//服务端
public class TcpServerDemo01 {
    public static void main(String[] args) {
        ServerSocket serverSocket=null;
        Socket socket=null;
        InputStream is=null;
        ByteArrayOutputStream baos=null;
        try {
            //1.我得有一个地址
            serverSocket = new ServerSocket(9999);

            //循环接收连接
            while(true){
                //2.等待客户端连接过来
                socket = serverSocket.accept();
                //3.读取客户端的消息
                is = socket.getInputStream();
                //管道流
                baos = new ByteArrayOutputStream();
                byte[] buffer=new byte[1024];
                int len;
                while((len=is.read(buffer))!=-1){
                    baos.write(buffer,0,len);
                }
                System.out.println("接收消息:"+baos.toString());
            }

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(baos!=null)
            {
                try {
                    baos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
           if(socket!=null){
               try {
                   socket.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
           if(serverSocket!=null){
               try {
                   serverSocket.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }

        }
    }
}

3.依次运行服务端和客户端

技术图片

 

 4.工作流程

客户端:

  ① 连接服务器 Socket

  ② 发送消息

服务端:

  ① 建立服务的端口 ServerSocket

  ② 等待用户的连接 accept

  ③ 接收用户的消息

 

网络编程 TCP

标签:tde   buffer   image   system   http   tcp   host   unknown   客户   

原文地址:https://www.cnblogs.com/ckfuture/p/14408722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!