Socket类的用法
原文:http://www.cnblogs.com/Elijah/archive/2011/11/29/2268047.html
Socket可以理解成一个IP地址加一个端口,构成的一个“插座”...的确这个词很形象,有了它,我们就相当于给程序上打了个插槽,于是其他程序就可以通过网络“插”进来了~
在客户端上我们只需要一个Socket,但是在服务端上,我们需要用一个Socket来监视某端口,然后根据来访的客户端来建立新的Socket负责数据通信。
代码总结如下:
服务端:

1 //1.服务器端定义用于监听的Socket对象:
2 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
3 //设定IP和端口
4 IPAddress ip = IPAddress.Parse(IP地址字符串);
5 IPEndPoint point = new IPEndPoint(ip, int.Parse(端口字符串));
6 //把IP和端口绑定到Socket上
7 socket.Bind(point);
8 //设置可同时排队的人数
9 socket.Listen(count);
10
11 //2.开启新线程(Listen方法)进行监听:
12 Thread th = new Thread(Listen);
13 th.IsBackground = true;
14 th.Start();
15
16 //3.在新线程(Listen方法中)循环监听:
17 while (true)
18 {
19 //新建一个叫connect的Socket,监听socket的IP地址和端口号
20 connect = socket.Accept();
21 //开启新线程(RecMsg方法)用于接收消息
22 Thread th = new Thread(RecMsg);
23 th.IsBackground = true;
24 th.Start();
25 }
26
27 //4.在新线程(RecMsg方法中)循环接收消息:
28 while (true)
29 {
30 byte[] buffer = new byte[length];
31 //如果连接没关
32 if (connect.Connected)
33 {
34 //用connect接收消息,返回接收到的长度
35 int length = connect.Receive(buffer);
36 //处理或显示消息
37 ....
38 }
39 }

客户端:

1 //1.客户端端定义用于发送信息的Socket对象并连接服务器:
2 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
3 IPAddress ip = IPAddress.Parse(服务器IP地址字符串);
4 IPEndPoint point = new IPEndPoint(ip, int.Parse(服务器端口字符串));
5 client.Connect(point);
6
7 //2.定义好byte数组buffer,给服务器发送信息:
8 client.Send(buffer);

Socket类的用法的更多相关文章
- C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介
C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介 IP是一种普遍应用于因特网.允许不同主机能够相互找到对方的寻址协议.IP地址由4个十进制的数字号码所组成, ...
- C#中timer类的用法
C#中timer类的用法 关于C#中timer类 在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类 ...
- C#正则表达式Regex类的用法
C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...
- 标准C++中的string类的用法总结
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...
- android中Handle类的用法
android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...
- Handle类的用法
android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...
- android application类的用法
android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...
- php class类的用法详细总结
以下是对php中class类的用法进行了详细的总结介绍,需要的朋友可以过来参考下 一:结构和调用(实例化): class className{} ,调用:$obj = new className(); ...
- PHP socket类
没事的时候自己封装了一个socket类 功能非常easy和curl功能是一样的 class socketClass{ private $host; private $url; private $err ...
随机推荐
- 第二百三十二节,Bootstrap排版样式
Bootstrap排版样式 学习要点: 1.页面排版 本节课我们主要学习一下 Bootstrap 全局 CSS 样式中的排版样式,包括了标题.页面 主体.对齐.列表等常规内容. 一.页面排版 Boot ...
- js转译html标签
api返回的接口数据是这样的"<div>测试数据</div>" js拼接html时会过滤掉<div></div> 所以需要对< ...
- android去权限反编译,签名,zipalign优化
反编译:上工具ApkTool 下载自行搜索google apktool github cd apktool目录 java -jar apktool_2.0.1.jar d xx.apk 生成xx目录 ...
- ilbc编解码在android实现
iLBC 是为专为提供稳健的 IP 语音通信而开发的语音 codec,以窄带语音为设计基础,具有 8 kHz 的采样率.iLBC codec 支持两种基本的帧长度:13.3 kbps 比特率下编码帧长 ...
- openvswitch总述
前面用了两天时间了解了OpenvSwitch的结构,今天参考其他资料加自己的心得做个总结 一. openvswitch的安装和使用 在前一篇文章中详细的介绍了OpenvSwitch的安装和使用,不再赘 ...
- 什么是Base64加密?为什么要有Base64加密?
产生这篇文章的动力在于对接腾讯云服务的时候每次都要进行Base64编码之后才能进行签名,之前只知道Base64是个算法,但是不知道为啥都用这个算法,这次为了链接Base64究竟是个什么东东才在网络上各 ...
- PHP下SESSION无法跨页传递的解决
修改PHP.ini1.Windows下PHP的session文件保存路径要设置成为一个绝对路径session.save_path = C:\windows\temp2.为temp设置权限,允许User ...
- php and mysql pear的安装
http://www.cnblogs.com/bugY/archive/2012/07/06/2578972.html 什么是PEAR 来自百度百科:PEAR是PHP扩展与应用库(the PHP Ex ...
- 为何不分类---失效的google image
w满屏的框架,甚至翻页了还是框架,起始user是想看下bootstrap在框架出来前是什么东西.
- python迭代器、生成器、yield和xrange
https://blog.csdn.net/u010138758/article/details/56291013