C#中的socket编程方法
服务器:
第一步,准备socket套接字:Socket sockfd = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
第二步,准备Ip地址与端口号(为绑定做准备):IPAddress Ip = new IPAddress(new Byte[]{192.168.1.7});
:EndPoint point = new IPEndPoint(Ip,7788);
第三步,绑定Ip地址与端口号:sockfd.Bind(point);
第四步,监听客户端是否连接:sockfd.Listrn(1024);// 最大的连接数
第五步,记录及相应客户端的连接请求:Socket client_sockfd = sockfd.Accept();
第六步,向客户端发送数据:client_sockfd.Send(data);//data可能要做一些转换
第七步,接收数据:sockfd.Recv();
客户端与之相似,只需要做微小的改动即可。
客户端不需要绑定,只需要与服务器进行连接:sockfd.Connect(point); //sockfd是客户端的套接字
下面是一个没有用到线程的小示例:
Server
static void Main(string[] args)
{
Socket sockfd = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,ProtocolType.Tcp);
// 准备IP
// IPAdderss Ip = new IPAdderss(new byte[]{192,168,1,7});
IPAddress Ip = IPAddress.Parse("192.168.1.7");
// 准备端口号
EndPoint point = new IPEndPoint(Ip,5678);
//绑定
sockfd.Bind(point);
//监听客户端的最大连接数
sockfd.Listen(1024);
//响应客户端的连接请求和记录客户端的Ip地址和端口号
Socket Client_sockfd = sockfd.Accept();
string message = "hello socket!";
//Byte[] data = new byte[1024];
// 向客户端发送数据
Byte[] data = Encoding.UTF8.GetBytes(message);
Client_sockfd.Send(data);
// 接收客户端发送的数据
Byte[] data2 = new byte[1024];
int lenth = Client_sockfd.Receive(data2);
string buf = Encoding.UTF8.GetString(data2, 0, lenth);
Console.WriteLine(buf);
Console.ReadKey();
}
}
Client
static void Main(string[] args)
{
Socket sockfd = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress Ip = IPAddress.Parse("192.168.1.7");
EndPoint point = new IPEndPoint(Ip, 5678);
sockfd.Connect(point);
// 接收服务器发来的消息
Byte[] data = new byte[1024];
int lenth = sockfd.Receive(data);
string message = Encoding.UTF8.GetString(data,0,lenth);
Console.WriteLine(message);
Console.WriteLine("请输入要发送的数据:");
string buf = Console.ReadLine();
Byte[] sdata = Encoding.UTF8.GetBytes(buf);
sockfd.Send(sdata);
Console.ReadKey();
}
}
C#中的socket编程方法的更多相关文章
- QT中的SOCKET编程(QT-2.3.2)
转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...
- 读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- 读懂Java中的Socket编程(转)
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- java中的socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- QT中的SOCKET编程
转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/ QT中的SOCKET编程 2008-10-07 23:13 ...
- Go中的Socket编程
在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程.你想过这些情景么?我们每天打开浏览器浏览网页时,浏览器进程怎么和W ...
- 深入理解javascript中实现面向对象编程方法
介绍Javascript中面向对象编程思想之前,需要对以下几个概念有了解: 1. 浅拷贝和深拷贝:程序在运行过程中使用的变量有在栈上的变量和在堆上的变量,在对象或者变量的赋值操作过程中,大多数情况先是 ...
- python进阶---Python中的socket编程
初识socket编程 一.前言 socket基于C\S架构(客户端\服务端)的编程模型,在Python中是以socket模块存在的. Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是 ...
- socket编程方法,概念
"蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也.蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也." ------------------------------------- ...
随机推荐
- jQuery的.bind()、.live()和.delegate(),on之间区别
基本要素 51CTO推荐专题:jQuery从入门到精通 DOM树 首先,可视化一个HMTL文档的DOM树是很有帮助的.一个简单的HTML页面看起来就像是这个样子: 事件冒泡(又称事件传播) 当我们点击 ...
- Listview实现分页下载
分析: * 1.初始控件,展示第一页数据 * 2.设置触发条件 * 1.设置滚动监听 * 2.判断是否在底部 * 3.判断是否停止滚动 * 4.更改网络请求参数为下一页 * 5.异步网络请求 * 6. ...
- 用grunt搭建自动化的web前端开发环境-完整教程
原稿:http://www.cnblogs.com/wangfupeng1988/p/4561993.html#!comments jQuery在使用grunt,bootstrap在使用grunt,百 ...
- PHP之ThinkPHP模板标签操作
Action : $User=M("user"); $list=$User->select(); $this->assign("list ...
- ubuntu:configure error:cannot find ssl libraries
安装SSL库,openssl或者libssl: sudo apt-get install openssl sudo apt-get install libssl configure的时辰加上选项: . ...
- .NET学习笔记(3) — VisualStudio使用总结
目录 一:VS是什么? 二:VS可以创建什么类型的工程? 三:VS的常用功能? 四:VS都有哪些使用技巧? 五:注意事项 六:资源汇总 一:VS是什么? Microsoft Visual Stud ...
- CMD/AMD
AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMDCMD 规范在这里:https://github.com/seajs/seajs/issues ...
- scala学习笔记:控制抽象
def repeat(n:Int)(action: =>Unit)=for(i<-1 to n)action var i = 0 repeat(5){ println(i=i+1) } 另 ...
- 使用 ICharpCode.SharpZipLib 压缩指定目录结构
今天做项目中遇见一个压缩问题,我的目录结构是树形菜单,文件在服务器存储是平面存储,没有目录结构,所以在下载指定目录的时候要构建目录结构,如下: 当我右键点击下载b目录文件夹的时候要Download ...
- 用PHP操作http中Etag、lastModified和Expires标签
http://blog.hehehehehe.cn/a/10994.htm 客户端通过浏览器发出第一次请求某一个URL时,根据 HTTP 协议的规定,浏览器会向服务器传送报头(Http Request ...