c# ,socket编程的一些常用方法
1 命名空间
需要添加的命名空间
using System.Net;
using System.Net.Socket;
2 构造新的socket对象
socket原型:
public socket (AddressFamily addressFamily,SocketType sockettype,ProtocolType protocolType)
(1) AddressFamily 用来指定socket解析地址的寻址方案,Inte.Network标示需要ip版本4的地址,Inte.NetworkV6需要ip版本6的地址;
(2) SocketType 参数指定socket类型,Raw支持基础传输协议访问,Stream支持可靠,双向,基于连接的数据流;
(3) ProtocolType 表示socket支持的网络协议,如常用的TCP和UDP协议。
3 定义主机对象
(1) IPEndPoint类
原型:
a)
public IPEndPoint(IPAddress address,int port)
参数address可以直接填写主机的IP,如"192.168.2.1";
b)
public IPEndPoint(long address,int port)
参数address整型int64如123456,参数port端口int32,如6655。
(2) 利用DNS服务器解析主机,使用Dns.Resolve方法
原型:
public static IPHostEntry Resolve(string hostname)
参数:待解析的主机名称,返回IPHostEntry类值,IPHostEntry为Inte.Net主机地址信息提供容器,该容器提供存有IP地址列表,主机名称等。
(3) Dns.GetHostByName获取本地主机名称
原型:
public static IPHostEntry GetHostByName(string hostname)
(4) GetHostByAddress
原型:
a)
public static IPHostEntry GetHostByAddress(IPAddress address)
参数:IP地址。
b)
public static IPHostEntry GetHostByAddress(string address)
参数:IP地址格式化字符串。
3.4 端口绑定和监听
同步套接字服务器主机的绑定和端口监听,Socket类的Bind(绑定主机),Listen(监听端口),Accept(接收客户端的连接请求)。
(1) Bind
原型:
public void Bind(EndPoint LocalEP)
参数为主机对象 IPEndPoint
(2) Listen
原型:
public void Listen(int backlog)
参数整型数值,挂起队列最大值
(3) accept
原型:
public socket accept()
返回为套接字对象
3.5 socket的发送和接收方法
(1) 发送数据
a)socket类的send方法
原型一:
public int Send(byte[] buffer)
参数:待发送的字节数组;
原型二:
public int Send(byte[],SocketFlags)
SocketFlags成员列表:
DontRoute不使用路由表发送,
MaxIOVectorLength为发送和接收数据的wsabuf结构数量提供标准值,
None 不对次调用使用标志,
OutOfBand消息的部分发送或接收,
Partial消息的部分发送或接收,
Peek查看传入的消息。
原型三:
public int Send(byte[],int,SocketFlags)
参数二要发送的字节数
原型四:
public int Send(byte[],int,int,SocketFlags)
参数二为Byte[]中开始发送的位置
b) NetWordStream类的Write方法
原型:
public override void write(byte[] buffer,int offset,int size)
参数分别为:字节数组,开始字节位置,总字节数。
(2) 接收数据
a) Socket类Receive方法
原型一:
public int Receive(byte[] buffer)
原型二:
public int Receive(byte[],SocketFlags)
原型三:
public int Receive(byte[],int,SocketFlags)
原型四:
public int Receive(byte[],int,int,SocketFlags)
Socket类Receive方法的相关参数可参看Socket类Send方法中的参数。
b) NetworkStream类的Read方法
public override int Read(int byte[] buffer,int offset,int size)
参数可参看NetworkStream类的Write方法。
Socket.Available 属性
获取已经从网络接收且可供读取的数据量。
命名空间: System.Net.Sockets
程序集: System(System.dll 中)
从网络接收的、可供读取的数据的字节数。
c# ,socket编程的一些常用方法的更多相关文章
- 基于C#的socket编程的TCP同步实现
该博客源著地址https://www.cnblogs.com/sunev/archive/2012/08/05/2604189.html 一.摘要 总结一下基于C#的TCP传输协议的涉及到的常用方法及 ...
- [置顶] Java套接字Socket编程
1)概念 网络编程基本模型就客户端到服务器的模型,也就是我们常见的C/S模型.简单的说就是两个进程间相互通信的过程.即通信双方一方作为服务器等待客户端提出请求并给以回应,另一方作为客户端向服务器提出请 ...
- Java Socket 编程
1. 背景 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节.你可以直接使用这些类和 ...
- Linux下的C Socket编程 -- server端的继续研究
Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...
- java socket编程(li)
一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以 ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- Linux下的C Socket编程 -- 获取对方IP地址
Linux下的C Socket编程(二) 获取域名对应的IP地址 经过上面的讨论,如果我们想要连接到远程的服务器,我们需要知道对方的IP地址,系统函数gethostbyname便能够实现这个目的.它能 ...
- Linux下的C Socket编程 -- 简介与client端的处理
Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...
随机推荐
- GNU--gprof使用总结
Added macros ACE_USES_GPROF which enables users to use gprof in a multithreaded environment with ACE ...
- mac svn 命令
https://www.cnblogs.com/luckythan/p/4478706.html http://blog.csdn.net/aizhiqiang2/article/details/53 ...
- IoC容器Autofac学习笔记
一.一个没有使用IoC的例子 IoC的全称是Inversion of Control,中文叫控制反转.要理解控制反转,可以看看非控制反转的一个例子. public class MPGMovieList ...
- Ubuntu编绎 Objective C程序
1.安装如下组件 sudo apt-get install如下组件:build-essential gobjc gobjc++ gnustep-devel 2.在工作目录建立下如Shell脚本,并更改 ...
- 红茶一杯话Binder (ServiceManager篇)
1.先说一个大概 Android平台的一个基本设计理念是构造一个相对平坦的功能集合,这些功能可能会身处于不同的进程中,然而却可以高效地整合到一起,实现不同的用户需求.这就必须打破过去各个孤立App所形 ...
- 李洪强iOS经典面试题31-解释垃圾回收的原理
李洪强iOS经典面试题31-解释垃圾回收的原理 问题 我们知道,Android 手机通常使用 Java 来开发,而 Java 是使用垃圾回收这种内存管理方式. 那么,ARC 和垃圾回收对比,有什么优点 ...
- linux学习笔记2---命令cd
Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的.cd命令比较简单,但是有一些技巧还是值得学习的. 所以,学习Linux 常用命令, ...
- Unity3D中简单的C#异步Socket实现
Unity3D中简单的C#异步Socket实现 简单的异步Socket实现..net框架自身提供了很完善的Socket底层.笔者在做Unity3D小东西的时候需要使用到Socket网络通信.于是决定自 ...
- linux TZ格式
man tzset可以很清楚了解时区设置格式,共3种: The first format is used when there is no daylight saving time in the lo ...
- java模拟从http上下载文件
1.依赖 Apache httpclient 包. 2.代码 HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = ...