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 ...
随机推荐
- Ajax实现异步上传图片
要求:点击页面浏览按钮后,选择需要上传的图片,页面无刷新,将上传的图片展示出来 开发流程 一:在页面编写表单代码和js代码 <!DOCTYPE html PUBLIC "-//W3C/ ...
- 将int型数字转换成6位字符串,不足的时候,前面补0
将int型数字转换成6位字符串,不足的时候,前面补0 方法一: int num = 123; num.ToString("000000"); 方法二: int num = 123; ...
- 微信小程序 事件
事件详解 事件分类 事件分为冒泡事件和非冒泡事件: 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递. 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递. WXML的冒泡事件列 ...
- 蓝桥杯 第四届C/C++预赛真题(1) 高斯日记(数学题,年份处理)
题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯 ...
- Java逍遥游记读书笔记<二>
Abstract抽象类 1.抽象类不能被实例化 2.抽象方法没有方法体 如: public abstract class Weapen { public abstract void attack(); ...
- VS2008 调试出现错误 "Unable to start debugging."
之前用的好好的调试功能,今天“F5”出现了 "Unable to start debugging." 的错误: 解决办法: 打开工程属性,选择“Debugging”,看看“Debu ...
- 简单理解Javascript中的call 和 apply
javascript中面向对像的能力是后来加进来的, 为了兼容性, 所以整出了很多奇特的东西, function Animal(){ this.name = "Animal"; t ...
- java字符串、时间大小比较
package mytest; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util ...
- 数据库读写分离(aop方式完整实现)
http://blog.csdn.net/machunlin2010/article/details/46471983
- 深入理解--SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用
SSM是sping+springMVC+mybatis集成的框架. MVC即model view controller. model层=entity层.存放我们的实体类,与数据库中的属性值基本保持一致 ...