---------------------- <a href="http://net.itheima.com/" target="blank">Windows Phone 7手机开发</a>、<a href="http://net.itheima.com/" target="blank">.Net培训</a>、期待与您交流! ----------------------
这是总结有关Socket的一些知识,希望大家能用的到。
1、Socket的两种类型:a、流式Socket(stream)
是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但效率低
b、数据报式Socket(datagram)
是一种无连接的Socket,对应于无连接的UDP服务应用。不安全(丢失‘顺序混乱,在接收端要分析重排及要求重发’),但效率高
2、scoket的一般应用模式(服务端(至少需要两个socket)和客户端):
a、服务端welcoming socket开始监听端口(负责监听客户端的连接信息)
b、客户端client socket连接服务端指定端口(负责接收和发送服务端消息)
c、服务端welcoming socket 监听到客户端连接,创建connection socket。(负责和客户端通信)
3、引用的命名空间是:
Using System.Net;
using System.Net.Socket;
4、服务端:
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace SocketWatch
{
public partial class Socketwathcpoint : Form
{
public Socketwathcpoint()
{
InitializeComponent();
}
Thread watchthread=null;
Socket wathcsocket=null;
private void btsocket_Click(object sender, EventArgs e)
{
//创建 服务端 负责监听的套接字,参数(使用IP4协议,使用流式连接,使用TCP协议传输数据)
wathcsocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//获得文本框的IP地址对象
IPAddress address = IPAddress.Parse(textBox1.Text.Trim());
//创建 包含ip和port的网络节点对象
IPEndPoint point = new IPEndPoint(address,int.Parse(textBox2.Text.Trim()));
//将负责监听的套接字绑定到唯一的IP和端口上
wathcsocket.Bind(point);
//设置监听队列的长度
wathcsocket.Listen(10);
watchthread=new Thread(accept);
watchthread.IsBackground=true;//设置为后台线程
watchthread.Start();//开启线程
message("服务器启动监听成功!");
}
void accept()
{
while(true)//持续不断的监听客户端的连接请求
{
//开始监听 客户端连接请求。 注意:Accept方法,会阻挡当前的线程
Socket connection = wathcsocket.Accept();
message("客户端连接成功!");
}
}
void message(string name)
{
textBox3.AppendText(name+"\r\n");
}
}
}
5、客户端:
using System.Net;
using System.Net.Sockets;
namespace ClientSocket
{
public partial class Form1 : Form
{
private void btClient_Click(object sender, EventArgs e)
{
//获得ip
IPAddress address = IPAddress.Parse(textBox1.Text.Trim());
//网路节点
IPEndPoint point = new IPEndPoint(address,int.Parse(textBox2.Text.Trim()));
//创建客户端套接字
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//向指定的IP和端口 发送连接请求
sock.Connect(point);
}
}
}
6、Socket的一些方法:
Socket():创建一个Socket
Bind():绑定一个本地的IP和端口号(IPEndPoint)
Listen():让Socket侦听传入的连接尝试,并指定侦听队列容量
Connect():初始化与另一个Socket的连接
Accept():接收连接并返回一个新的Socket(需要调用一个线程来操作)
Send():输出数据到Socke t
Receive(): 从Socket中读取数据(需要调用一个线程来操作)
Close():关闭Socket(销毁连接)
--------------------- <a href="http://net.itheima.com/" target="blank">Windows Phone 7手机开发</a>、<a href="http://net.itheima.com/" target="blank">.Net培训</a>、期待与您交流! ----------------------