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 ...
随机推荐
- maven分开打包jar文件和依赖jar包和资源文件
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &l ...
- [position]返回顶部
position:fixed;实现 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- iptables 使用
原文链接 本文介绍25个常用的iptables用法.如果你对iptables还不甚了解,可以参考上一篇iptables详细教程:基础.架构.清空规则.追加规则.应用实例,看完这篇文章,你就能明白ipt ...
- 一个简单题,引发的思索 + nyoj 1189
题目描述:第一行:给你两个数m和n,m表示有m个数,然后下一行输入m个数,每个数只能选择一次,统计共有多少种情况使得所选数的和大于等于n: 解决本题我想到了两种方法,(题目自己想的,先不考虑超时),第 ...
- KVC之-(id)valueForKey:(NSString *)key的实现原理与验证
KVC之-(id)valueForKey:(NSString *)key的实现原理与验证 2.-(id)valueForKey:(NSString *)key的实现原理与验证; #功能:使用一个字符串 ...
- c# 多线程里面创建byte数组发生内存溢出异常求解
在多线程里面读取一个400多M的Xml文件,首先将其读入FileStream里面,然后,在执行 byte [] bts = new byte[fs.Length]; 这句代码时,出现内存溢出的异常,求 ...
- Mtx——Mobile Tutorial Series (LibGDX & MTX)
http://moribitotechx.blogspot.co.uk/p/tutorial-series-libgdx-mtx.html —————————————————————————————— ...
- Codeforces Round #268 (Div. 2) (被屠记)
c被fst了................ 然后掉到600+.... 然后...估计得绿名了.. sad A.I Wanna Be the Guy 题意:让你判断1-n个数哪个数没有出现.. sb题 ...
- php视频教程
网址:http://www.php100.com/index.html
- db2 sql
import from empty.del of replace into table_name