SOCKET网络编程基础知识总结
2013-05-25 20:51
399 查看
1、Socket一般应用模式(服务器和客户端)
(1)、服务器welcoming socket 开始监听端口(负责监听客户端连接信息)
(2)、客户端client socket连接服务端指定端口(负责接收和发送服务端信息)
(3)、服务端welcoming socket监听到客户端连接,创建connection socket(负责和客户端通信)
服务器端的Socket(至少需要两个),一个负责接收客户端连接(但不负责与客户端通信),
每成功接收到一个客户端的连接便在服务端产生一个对应的Socket
在接收到客户端连接时创建
为每个连接成功的客户端都创建一个对应的Socket
客户端的Socket
必须指定要连接的服务端地址和端口
通过创建一个Socket对象来初始化一个到服务器端的TCP连接
2、Socket的通讯过程
(1)、服务器端:
申请一个socket
绑定到一个IP地址和一个端口上
开启侦听,等待接受连接
(2)、客户端:
申请一个socket
连接服务器(指明IP地址和端口号)
(3)、服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原监听socket继续监听.
3、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)
4、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 来存储购物车信息,而不需要任何的类型转化。
(1)、服务器welcoming socket 开始监听端口(负责监听客户端连接信息)
(2)、客户端client socket连接服务端指定端口(负责接收和发送服务端信息)
(3)、服务端welcoming socket监听到客户端连接,创建connection socket(负责和客户端通信)
服务器端的Socket(至少需要两个),一个负责接收客户端连接(但不负责与客户端通信),
每成功接收到一个客户端的连接便在服务端产生一个对应的Socket
在接收到客户端连接时创建
为每个连接成功的客户端都创建一个对应的Socket
客户端的Socket
必须指定要连接的服务端地址和端口
通过创建一个Socket对象来初始化一个到服务器端的TCP连接
2、Socket的通讯过程
(1)、服务器端:
申请一个socket
绑定到一个IP地址和一个端口上
开启侦听,等待接受连接
(2)、客户端:
申请一个socket
连接服务器(指明IP地址和端口号)
(3)、服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原监听socket继续监听.
3、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)
4、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 来存储购物车信息,而不需要任何的类型转化。
相关文章推荐
- 黑马程序员 Java基础知识总结-网络编程
- 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结
- Socket编程——网络的基础知识
- 【tcp-ip学习总结】socket编程基础/网络编程基础
- 黑马程序员——基础知识总结_网络编程
- 黑马程序员_JavaSE基础知识总结十八:网络编程
- socket网络编程的一些基础知识
- Java的Socket网络编程基础知识入门教程
- Java基础知识强化之网络编程笔记02:Socket通信原理图解
- java SE基础知识点总结(01):编程环境的搭建
- 网络基础知识总结
- 【原创】《Linux高级程序设计》杨宗德著 - Linux Socket网络编程基础 - BSD Socket网络通信编程 分类: Linux --- 应用程序设计 2014-12-05 16:53 63人阅读 评论(0) 收藏
- 第9将 网络编程-网络编程的基础知识
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结 转载
- Java基础知识强化之网络编程笔记15:Android网络通信之 Android异步任务处理(AsyncTask使用)
- C#网络程序设计(2)Socket基础编程
- 黑马程序员--javaSE--网络编程基础总结
- iOS 各种网络编程总结--进程、线程、Socket、HTTP、TCP/IP、TCP和UDP
- [转载]在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分 .