黑马程序员--套接字
来源:互联网 发布:淘宝评价差评怎么写 编辑:程序博客网 时间:2024/04/27 04:18
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! -----------------------
socket概念
socket的应为原意为“孔”或“插座”。作为进程通信机制,取后一个意思。通常也称作“套接字”,用于描述IP地址和端口,是一种通信链的句柄。其实就是两个程序通信用的。
socket非常类似于电话插座。以电话网为例,电话的通话双方相当于相互通信的2个程序,电话号码就是IP地址。任何用户在通信之前,首先要占用一部电话机,相当于申请一个socket;同时要知道对方号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求。对方假如在场并空闲,拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭socket,撤销连接。
在internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应于不同的服务(应用程序)。
两种类型:
1.流式socket(stream)
是一种面向连接的socket,针对与面向连接的tcp服务应用,安全,当时效率低。
2.数据报式socket(datagram)
是一种无连接的socket,对应于无连接的udp服务应用,不安全(丢失,顺序混乱,在接收端要分析重排,要求重发),效率高
socket一般应用模式(服务端和客户端)
1.服务端welcomeing socket 开始监听端口(负责监听客户端连接信息)
2客户端client socket连接服务端指定端口(负责接收和发送服务端消息)
3.服务端welcoming socket监听到客户端连接,创建connection socket(负责和客户端通信)
服务器端的socket(至少需要两个)
一个负责接收客户端连接请求
每成功接收到一个客户端的连接便在服务端产生一个对应的socket
1.在接收到客户端连接是创建(不负责通信)
2为每个连接成功的客户端创建一个对应的socket(负责和客户端通信)
客户端的socket
必须指定要连接的服务端地址和端口
通过创建一个socket对象来初始化一个到服务器端的tco连接
socket的通讯过程
服务器端
1申请一个socket
2.绑定到一个IP地址和一个端口上
3开启监听,等待接收连接
客户端
1申请一个socket
2连接服务器(指明ip地址和端口号)
服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原侦听socket继续侦听
socket通信基本流程图
详细请查看:http://edu.csdn.net
- 黑马程序员--套接字
- 黑马程序员_java套接字
- 黑马程序员——通信套接字
- 黑马程序员-多线程和套接字
- 黑马程序员-多线程与套接字
- 黑马程序员--Socket(套接字)
- 黑马程序员—服务端套接字
- 黑马程序员--Socket 套接字编程
- 黑马程序员《.NET 多线程与套接字》
- 黑马程序员<.net学习---Socket套接字>
- 黑马程序员--数据流与套接字
- 黑马程序员_学习日记7_多线程、套接字
- 黑马程序员-------C#中网络套接字的简单用法
- 黑马程序员--.Net学习日记——套接字
- 黑马程序员——套接字网络编程学习笔记
- 黑马程序员_网络编程之套接字
- 黑马程序员--多线程与套接字组合:简单聊天室(1)
- 黑马程序员--多线程与套接字组合:简单聊天室(2)
- hdu——An Easy Problem
- Java虚拟机学习笔记1-内存区域
- 【xinfanqie】笔者支招:Win7开启Aero效果的方法
- hdu——Error Correction
- 简单工厂模式-C++实现
- 黑马程序员--套接字
- win下qt5.1 通过空项目纯源码编写项目时 -- QApplication: No such file or directory 问题的解决方法
- uva 10105
- cvInRangeS函数演示————学习OpenCV笔记(四)
- POJ--3017--Cut the Sequence--DP优化
- JDBC连接mySQL数据库
- SED单行脚本快速参考(Unix 流编辑器)
- HDU 1385 Minimum Transport Cost (Floyd算法 + 路径输出)
- native2ascii命令