ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1、TCP通信

2022-07-05 21:37:37  阅读:171  来源: 互联网

标签:OutputStream java Socket 通信 TCP InputStream import socket


TCP通信,Java提供了2个类用来实现tcp通信程序:

1、java.net.Socket 创建Socket对象,用来建立和服务器的连接,发送请求,接收响应;

2、java.net.ServerSocket,创建ServerSocket对象,启动tcp服务程序;

 

1、客户端和服务器建立一条逻辑连接,连接种包含一个对象,一个IO对象;

2、客户端和服务器使用这个对象进行通信,通信数据不仅仅是字符,所以IO对象是字节流;

 

1、服务端使用accept方法获取客户端对象,明确和哪个客户端进行通信;

 

socket构造方法:

 

socket(String host,int port)创建一个流套接字,并将其连接到指定主机的指定端口

成员方法:

OutputStream getOutputStream()返回此套接字的输出流

inputStream getInputStream()返回此套接字的输入流

void close()关闭套接字

ServerSocket构造方法:

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

public class TcpServer1 {
    public static void main(String[] args) throws IOException{
            //创建服务器 serverSocket 对象,指定绑定端口后
            ServerSocket serverSocket = new ServerSocket(8888);

            //使用 serverSocket 引用,调用accept方法,进行侦听,获取客户端请求的 socket
            Socket socket = serverSocket.accept();

            //使用 Socket 对象中的 getInputStream 方法,获取网络字节输入流 InputStream 对象,
            InputStream is = socket.getInputStream();

            //使用 InputStream引用调用方法 read,读取客户端发送的数据流;
            byte[] bytes = new byte[1024];
            int len = is.read(bytes);
            //打印获取的数据
            System.out.println(new String(bytes, 0, len));

            //使用 Socket 对象种的 getOutputStream 方法,获取网络字节输入流 OutputStream 对象,
            OutputStream os = socket.getOutputStream();

            //返回给客户端信息
            os.write("收到信息".getBytes());

            //释放资源
            socket.close();
            serverSocket.close();


    }
}

 

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

public class TcpClient1 {
    public static void main(String[] args) throws IOException{
        //1、创建socket对象,连接指定服务器IP和Port
        Socket socket = new Socket(InetAddress.getLocalHost(),8888);

        //2、使用socket引用,调用getOutputStream方法,获取OutputStream对象,调用write方法写数据
        socket.getOutputStream().write("你好".getBytes());

        //3、使用OutputStream引用,调用OutputStream中的write方法,给服务器发数据
        //os.write("你好".getBytes());

        //4、使用socket引用,调用getInputStream方法,获取getInputStream对象
        InputStream is = socket.getInputStream();

        //5、使用InputStream引用,调用InputStream中的read方法,获取服务器返回的数据
        byte[] bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));

        //6、释放资源
        socket.close();
    }
}

 

标签:OutputStream,java,Socket,通信,TCP,InputStream,import,socket
来源: https://www.cnblogs.com/tfqfdr/p/16441100.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有