【java网络】TCP通信,ServerSocket类和Socket类的初始化及使用

  • TCP/IP协议
    1,TCP/IP模型结构:TCP/IP共分为四层:应用层 、传输层 、网络层 、网络接口层.

1)应用层:
应用层面有着很多协议来支持不同的应。如我们进行万维网(WWW)访问用到了HTTP协议、文件传输用FTP协议、电子邮件发送用SMTP、域名的解析用DNS协议、远程登录用Telnet协议等等,都是属于TCP/IP应用层的。(FTP、SMTP、telnet、DNS、tftp)
2)传输层:
传输层的的功能主要是提供应用程序间的通信,TCP/IP协议族在这一层的协议有TCP和UDP。
3)网络层:
网络层是TCP/IP协议族中非常关键的一层,主要定义了IP地址格式,从而能够使得不同应用类型的数据在Internet上通畅地传输,IP协议就是一个网络层协议。(IP数据包)
4) 网络接口层:
这是TCP/IP软件的最低层,负责接收IP数据包并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。(帧,网络接口协议)。
TCP网络通信是利用Socket类编写通信程序,TCP网络通信常用两个应用程序,一个是ServerSocket类,表示Socket服务器端,Socket类表示Socket客户端,两者之间的表达方式和逻辑顺序也不一样,两者交互通常有:
(1)服务器端创建一个服务器端套接字(ServerSocket),调用accept()方法监听,等待客户端来接听;
(2)客户端创建一个Socket类,请求与服务器建立连接;
(3)服务器接受客户端的连接请求,同时创建一个新的Socket类与客户建立连接,服务器等待新的连接请求。
服务器与客户端的三次握手:
第一次握手:客户端要和服务端进行通信,客户端向服务器发送一个请求信号。
第二次握手:当服务端接收到客户端的连接请求,此时要给客户端一个确认信息。
第三次握手:当客户端收到了服务端的确认连接信息后,要向服务器发送一个确认信息。

  • 实例化代码示例:
    服务端:
    服务器向客户端发送一条消息:
package edu;

import com.sun.corba.se.impl.activation.ServerTableEntry;

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

public class 服务端 {
    public static void main(String[] args)throws IOException{
        ServerSocket s = null;   //申请端口
        s = new ServerSocket(6666);    //  一  一new就连接
        System.out.println("等待连接");
        Socket ss = s.accept();      //监听
        System.out.println("已连接");

        //字节流
        InputStream in = ss.getInputStream();
        OutputStream out = ss.getOutputStream();

        //对象流
        PrintWriter pw = new PrintWriter(out);
        pw.println("hello!");
        pw.flush();
    }
}

运行结果:

  • 客户端:
    接受来自服务端发送的消息:
package edu;
import java.io.*;
import java.net.Socket;
public class 客户端 {
    public static void main(String[] args)throws IOException {
        Socket s = new Socket("127.0.0.1",6666);//已经开始连接

        InputStream in = s.getInputStream();      //读
        OutputStream out = s.getOutputStream();   // 写

        BufferedReader br = new BufferedReader(
                new InputStreamReader(in)
        );
        String str = br.readLine();
        System.out.println(str);
    }
}

运行结果:
在这里插入图片描述
在这里插入图片描述

发布了101 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/TONGZONGE/article/details/94645820