ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

2、网络编程TCP协议

2021-11-25 21:32:00  阅读:133  来源: 互联网

标签:ps Socket 编程 网络 TCP socket new 接字 客户端


2、网络编程TCP协议

1、TCP程序概述
TCP是一个可靠的协议,面向连接的协议。
实现TCP程序,需要编写服务器端和客户端,Java API为我们提供了java.net 包,为实现网络应用程序提供类。
ServerSocket :此类实现服务器套接字。
Socket :此类实现客户端套接字(也可以就叫“套接字”)。
Socket是网络驱动层提供给应用程序编程的接口和一种机制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、实现服务器端与客户端程序
服务器端:
public class ServerSocket extends Object
此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者
返回结果。
ServerSocket(int port)
创建绑定到特定端口的服务器套接字。
void setSoTimeout(int timeout)
通过指定超时值启用/禁用 SO_TIMEOUT,以毫秒为单位。
InetAddress getInetAddress()
返回此服务器套接字的本地地址。
Socket accept()
侦听并接受到此套接字的连接。

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class EchoServerDemo {
    public static void main(String[] args) {
        //创建一个服务器端的Socket(1024-65535)
        try {
            ServerSocket server = new ServerSocket(6666);
            System.out.println("服务器创建成功,正在等待客户端连接······");

            //等待客户端的连接,如果客户端连接成功,立即返回一个socket对象
            Socket socket=server.accept();
            //getInetAddress当前地址
            System.out.println("客户端连接成功·····"+server.getInetAddress().getHostAddress());

            BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

            //通过输入流读取数据,如果没有数据那么会阻塞
            String info=br.readLine();
            System.out.println(info);
            //获取输入流,向客户端返回信息
            PrintStream ps=new PrintStream(new BufferedOutputStream(socket.getOutputStream()));
            ps.println("echo:"+info);
            ps.flush();
            //关闭
            ps.close();
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

客户端:
public class Socket extends Object
此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
Socket(String host, int port)
创建一个流套接字并将其连接到指定主机上的指定端口号。
InputStream getInputStream()
返回此套接字的输入流。
OutputStream getOutputStream()
返回此套接字的输出流。
void setSoTimeout(int timeout)
启用/禁用带有指定超时值的
SO_TIMEOUT,以毫秒为单位。

import java.io.*;
import java.net.Socket;

public class EchoClientDemo {
    public static void main(String[] args) {
        //创建一个socket对象,指定要连接的服务器

        try {
            Socket socket=new Socket("localhost",6666);
            //获取socket的输入输出流
            PrintStream ps=new PrintStream(new BufferedOutputStream(socket.getOutputStream()));
            BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

            ps.println("hello my name is bin");
            ps.flush();
            //读取服务器端返回的数据

            String info = br.readLine();
            System.out.println(info);
            ps.close();
            br.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

服务器创建成功,正在等待客户端连接······
客户端连接成功·····0.0.0.0
hello my name is bin

echo:hello my name is bin

标签:ps,Socket,编程,网络,TCP,socket,new,接字,客户端
来源: https://blog.csdn.net/weixin_53330986/article/details/121547752

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

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

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

ICode9版权所有