lsocket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的。)
lsocket非常类似于电话插座。以一个电话网为例。电话的通话双方相当于相互通信的2个程序,电话号码就是IP地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求。对方假如在场并空闲,拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭socket,撤消连接。
l在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务(应用程序)。
l例如:http 使用80端口  ftp使用21端口 smtp 25端口
l有两种类型:
•流式Socket(STREAM):
是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低;
•数据报式Socket(DATAGRAM):
是一种无连接的Socket,对应于无连接的UDP服务应用.不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高.
Socket一般应用模式(服务器端和客户端)

1.服务端welcoming socket 开始监听端口(负责监听客户端连接信息)
2.客户端client socket连接服务端指定端口(负责接收和发送服务端消息)
3.服务端welcoming socket 监听到客户端连接,创建connection socket。(负责和客户端通信)

l服务器端的Socket(至少需要两个)
•一个负责接收客户端连接请求(但不负责与客户端通信)
•每成功接收到一个客户端的连接便在服务端产生一个对应的负责通信的Socket
•在接收到客户端连接时创建.
•为每个连接成功的客户端请求在服务端都创建一个对应的Socket(负责和客户端通信).
l客户端的Socket
•客户端Socket
•必须指定要连接的服务端地址和端口。

通过创建一个Socket对象来初始化一个到服务器端的TCP连接

l服务器端:
•申请一个socket
•绑定到一个IP地址和一个端口上
•开启侦听,等待接授连接
l客户端:
•申请一个socket
•连接服务器(指明IP地址和端口号)
l服务器端接到连接请求后,产生一个新的socket(端口大于1024  小于65535)与客户端建立连接并进行通讯,原监听socket继续监听。
l连接通过构造函数完成。
lpublic Socket(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
•AddressFamily 成员指定 Socket 用来解析地址的寻址方案。例如,InterNetwork 指示当 Socket 使用一个 IP 版本 4 地址连接。
•SocketType 定义要打开的 Socket 的类型
•Socket 类使用 ProtocolType 枚举向 Windows Sockets API 通知所请求的协议
l至少要定义一个要连接的远程主机的IP和端口号。
l端口号必须在 1 和 65535之间,最好在1024以后。
l要连接的远程主机必须正在监听指定端口,也就是说你无法随意连接远程主机。
•如:
•IPAddress addr = IPAddress.Parse("127.0.0.1");
•IPEndPoint endp = new IPEndPoint(addr, 10001);

服务端先绑定:serverWelcomeSocket.Bind(endp)

客户端再连接:clientSocket.Connect(endp)

l一个Socket一次只能连接一台主机。
lSocket关闭后无法再次使用。
l每个Socket对象只能一台远程主机连接. 如果你想连接到多台远程主机, 你必须创建多个Socket对象。
l------------------相关类--------------------------
lIPAddress类:包含了一个IP地址
lIPEndPoint类:包含了一对IP地址和端口号
l--------------------方法们------------------------------
lSocket (): 创建一个Socket
lBind(): 绑定一个本地的IP和端口号(IPEndPoint)
lListen(): 让Socket侦听传入的连接尝试,并指定侦听队列容量
lConnect(): 初始化与另一个Socket的连接
lAccept(): 接收连接并返回一个新的socket
lSend(): 输出数据到Socket
lReceive(): 从Socket中读取数据
lClose(): 关闭Socket (销毁连接)
 

Socket相关概念的更多相关文章

  1. 2 socket相关概念

    嘿嘿 这只是学习过程中的笔记积累,百度也是一代吧,大神就勿喷勒..... 1 为什么把网络编程接口叫做套接字 socket字面意思为插座 插孔,让人联想到电话,这种简单的设备给人类太大的方便 2 根据 ...

  2. C#网络编程二:Socket编程

    一:什么是SOCKET socket的英文原义是"孔"或"插座".作为进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端 ...

  3. Asp.Net - 9.socket(聊天室)

    9.1 Socket相关概念 IP地址 每台联网的电脑都有一个唯一的IP地址. 长度32位,分为四段,每段8位,用十进制数字表示,每段范围 0 ~ 255 特殊IP:127.0.0.1 用户本地网卡测 ...

  4. Socket网络编程(1)

    TCP/IP 简单介绍 应用层 (Application):应用层是个很广泛的概念,有一些基本相同的系统级 TCP/IP 应用以及应用协议,也有许多的企业商业应用和互联网应用. 传输层 (Transp ...

  5. Socket知识总结

    一.网络编程相关概念 1. 互联网通过ip定位电脑 2. 在电脑中通过port定位程序 3. 程序和程序之间通过协议定义通信数据格式 二.Socket相关概念 1. ip地址 1) 每台联网的电脑都有 ...

  6. 网络编程之Socket详解

    在说socket之前.我们先了解下相关的网络知识: 端口   在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上 ...

  7. 【转】C# Socket通信编程

    https://www.cnblogs.com/dotnet261010/p/6211900.html#undefined 一:什么是SOCKET socket的英文原义是“孔”或“插座”.作为进程通 ...

  8. 【转】Winform Socket通信

    Socket相关概念[端口] 在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务(应 ...

  9. Winform Socket通信

    Socket相关概念[端口] 在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务(应 ...

随机推荐

  1. 学习使用azure CLI创建linux环境

    学习使用azure CLI创建linux环境 选用了容器的方法来登录 docker run -it microsoft/azure-cli 进入交互界面后登录到我的订阅 azure login -e ...

  2. js中对节点属性的操作和对节点的操作

    常用的节点属性操作方法 1.setAttribute(name,value):给某个节点添加一个属性 2.getAttribute(name):获取某个节点属性的值. 3.removeAttribut ...

  3. THinkPHP的认识

    四中路由方式:http://网址/index.php?m=分组&c=控制器&a=操作方法(但是这个不安全,不推荐使用)http://网址/index.php/分组/控制器/操作方法(默 ...

  4. nginx启动脚本,手动编辑

    nginx启动脚本,手动编辑 #! /bin/bash # chkconfig: - # description: nginx service XDIR=/www/server/nginx DESC= ...

  5. 百度OCR文字识别-身份证识别

    简介 一.介绍 身份证识别 API 接口文档地址:http://ai.baidu.com/docs#/OCR-API/top 接口描述 用户向服务请求识别身份证,身份证识别包括正面和背面. 请求说明 ...

  6. Laravel 5 框架性能优化技巧

    性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能. 接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论 1.配置缓存信息 使用l ...

  7. 阿里安全潘多拉实验室首先完美越狱苹果iOS 11.2

    苹果官方对iOS 11的评价是"为iPhone带来巨大进步,让iPad实现里程碑式飞跃."但为了不断修复Bug,苹果于12月2日推出最新的iOS 11.2,修复了Google安全人 ...

  8. Hashtable 小记

    Hashtable 是 JDK 中较早的数据结构了,目前已不再推荐使用了.但抱着学习的目的,还是看了下它的实现. 简介 Hashtable,顾名思义即哈希表,是一种经典的数据结构.其基本结构是一个数组 ...

  9. JavaScript实现AOP(面向切面编程)

    什么是AOP? AOP(面向切面编程)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日志统计.安全控制.异常处理等.把这些功能抽离出来之后, 再通过" ...

  10. uva11059(最大乘积)

    Problem D - Maximum Product Time Limit: 1 second Given a sequence of integers S = {S1, S2, ..., Sn}, ...