• 黑马程序员:多线程Socket


    ---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! -----------------------


    一.Socket一般应用模式(服务器和客户端)
    (1)、服务器welcoming socket 开始监听端口(负责监听客户端连接信息)
    (2)、客户端client socket连接服务端指定端口(负责接收和发送服务端信息)
    (3)、服务端welcoming socket监听到客户端连接,创建connection socket(负责和客户端通信)


    二.服务器端的Socket(至少需要两个),一个负责接收客户端连接(但不负责与客户端通信), 
    1.每成功接收到一个客户端的连接便在服务端产生一个对应的Socket
    2.在接收到客户端连接时创建
    3.为每个连接成功的客户端都创建一个对应的Socket


    三.客户端的Socket 
    1.必须指定要连接的服务端地址和端口
    2.通过创建一个Socket对象来初始化一个到服务器端的TCP连接


    四.Socket的通讯过程


    (1)服务器端:
    申请一个socket 
    绑定到一个IP地址和一个端口上 
    开启侦听,等待接受连接 


    (2)客户端:
    申请一个socket 
    连接服务器(指明IP地址和端口号) 


    (3)服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原监听socket继续监听.


    五.Socket的构造函数
    连接通过构造函数完成
    用法:  
    public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType)
     AddressFamily成员指定Socket用来解析地址的寻址方案.例如:InterNetwork指示当Socket使用一个IP版本4地址连接. 
     SocketType定义要打开的Socket的类型 
     Socket类使用ProtocolType枚举向Windows Sockets API 通知所请求的协议 
    例如:  
    mySocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);


    注意:
    至少要定义一个要连接的远程主机IP和端口号. 
    端口号必须在1和65535之间,最好在1024以后. 
    要连接的远程主机必须正在监听指定端口,也就是说你无法随意连接远程主机. 


    例如:
    IPAddress addr=IPAddress.Parse("127.0.0.1");
    IPEndPoint endp=new IPEndPoint(addr,10001);
    服务端先绑定:serverWelcomeSocket.Bind(endp)
    客户端再连接:clientSocket.Connect(endp)


    六.Socket方法
    (1)、首先引入命名空间:using System.Net;里面包含:IPAddress,IPEndPoint(ip和port)类
    (2)、相关类:
    IpAddress类:包含了一个IP地址 
    IPEndPoint类:包含了一对IP地址和端口号 
    (3)、相关方法:
    Socket():创建一个Socket 
    Bind():绑定一个本地的IP和端口号(IPEndPoint) 
    Listen():让Socket监听传入的连接尝试,并指定监听队列容量 
    Connect():初始化与另一个Socket的连接 
    Accept():接收连接并返回一个新的socket 
    Send():输出数据到Socket 
    Receive():从Socket中读取数据 
    Close():关闭Socket(销毁连接) 
    5、Dictionary 泛型字典集合 
     
    泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,
    使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。 
    很多非泛型集合类都有对应的泛型集合类,下面是常用的非泛型集合类以及对应的泛型集合类:
    非泛型集合类 泛型集合类
    ArrayList List
    HashTable DIctionary
    Queue         Queue
    Stack         Stack
    SortedList SortedList


    我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类。我们经常用HashTable 来存储将要写入到数据库或者返回的信息,
    在这之间要不断的进行类型的转化,增加了系统装箱和拆箱的负担,如果我们操纵的数据类型相对确定的话用 Dictionary 集合类
    来存储数据就方便多了.
    例如:
    我们需要在电子商务网站中存储用户的购物车信息( 商品名,对应的商品个数)时,完全可以用 Dictionary 来存储购物车信息,而不需要任何的类型转化。

    --------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

    详细请查看:http://edu.csdn.nSet

  • 相关阅读:
    天梯赛 社交集群(并查集)
    蓝桥杯 正则问题(dfs)
    天梯赛L3-001. 凑零钱(01背包记录物品)
    天梯赛/PAT 二叉树总结
    GPLT天梯赛 L2-022. 重排链表
    蓝桥杯 2的次幂表示(递归)
    排列与组合的一些定理
    卡特兰数
    洛谷P1349 广义斐波那契数列(矩阵快速幂)
    Manacher's Algorithm 马拉车算法(最长回文串)
  • 原文地址:https://www.cnblogs.com/james1207/p/3370773.html
Copyright © 2020-2023  润新知