凭借这份Java面试题集,【计算机网络 12

2、web服务器接收到URL并进行分析,将对应的网络内容以及资源返回给浏览器;

3、浏览器接收到web服务器返回的网页内容以及资源,将其进行解析和渲染,将最终的效果展示给用户。

三、基于TCP协议的面向连接的套接字(Internet Socket)


1、TCP:The Transmission Control Protocol 传输控制协议。

2、我们经常讲的套接字也就是Internet Scoket,根据数据传输方式,可以将Internet Scoket分为几种,在使用socket()创建网络连接时,必须告诉它是哪一种数据传输方式,简单来说就是数据传输的控制协议。

计算机领域称之为:流格式套接字(Stream Sockets),在计算机代码中使用SOCK_STREAM表示。

3、SOCK_STREAM有以下特点:

  • 可靠的、双向的通信数据流;

  • 数据传输是按照顺序进行的;

  • 数据在传输中是准确无误的,是自带重发机制的;

  • 数据的发送和接收是不同步的,存在缓冲区;

  • 流格式套接字的典型应用就是HTTP协议,因为浏览器在加载进行解析时必须要数据完整正确。

四、基于UDP协议的无连接的套接字(Datagram Sockets)


1、UDP:User Datagram Protocol 用户数据报协议。

2、基于UDP协议的无连接的套接字,计算机领域称之为:数据报格式套接字(Datagram Sockets),计算机代码中使用SOCK_DGRAM表示。

SOCK_DGRAM是一种高效率、高速度、不可靠的通信数据流。其是基于UDP协议的,不用进行数据校验,只进行数据传输。

3、SOCK_DGRAM有以下特点:

  • 每次传输数据大小有限制;

  • 追求高效率、高速度;

  • 传输的数据可能丢失或者损坏(小概率事件);

  • 数据的发送和接收是同步的,也就是存在数据边界;

数据报格式的典型应用就是QQ视频和语音,因为这两者的需求是高效率和低延时,同时小概率的丢失数据不会影响整个数据的传输质量。

五、C# 实现socket服务端与客户端通信


  • 模拟客户端向服务端发送数据

  • 服务端:


private void socketServer()

{

    Log("大家好,我是socket服务端!");

    //1,创建socket             using System.Net.Sockets;

    //AddressFamily.InterNetwork内网,SocketType.Stream以流来通信,第三个为协议

    Socket tcpSever = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);



    //2,绑定服务器IP(计算机唯一标识)和端口号。端口号将通信数据给指定的软件。一个软件占用一个特定端口号(0-60000)

    //查看本机IP:cmd-》ipconfig  本机局域网IP:198.168.1.2 

    //IPAddress ipAddress = new IPAddress(new byte[] { 192,168,1,2});

    EndPoint point = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);//IPEndPoint是对IP+端口号的一层封装

    tcpSever.Bind(point);//向操作系统申请一个可用的IP和端口号做通信。绑定当前IP和端口号



    //3.监听。等待客户端连接

    tcpSever.Listen(100);//参数是最大连接数

    Socket clientSocket = tcpSever.Accept();//暂停当前线程,直到一个客户端连接过来,之后进行下面的代码。返回的socket为客户端socket



    //使用返回的socket跟客户端做通信

    string message = "welcome!";

    Log(message);

    byte[] meg = Encoding.UTF8.GetBytes(message);//对字符串编码,得带一个字节数组

    clientSocket.Send(meg);



    //接受客户端数据

    byte[] buffer = new byte[1024];

    int length = clientSocket.Receive(buffer);//接受客户端数据

    string mes = Encoding.UTF8.GetString(buffer, 0, length);

    Log(mes);



    tcpSever.Close();

}

  • 客户端

private void socketClient(string msg)

{

    Log("大家伙,我是CSDN素小暖,创建socket客户端");

    //创建socket

    Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);



    //发起连接请求

    EndPoint remoteIp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值