1对1的发送和接收
Client 端
void ThreadReceive()
{
try
{
while (true)
{
byte[] B = new byte[1024 * 1024];
int length = S1.Receive(B);
textBox1.AppendText(Encoding.UTF8.GetString(B, 0, length)+"\r\n");
}
}
catch (Exception EX)
{
textBox1.AppendText(EX.Message.ToString());
} }
button1_Click
加上
T1 = new Thread(ThreadReceive);
T1.IsBackground = true;
T1.Start();
Server 端
S2.Send(Encoding.UTF8.GetBytes(textBox2.Text));
Dictionary<string, Socket> Dic = new Dictionary<string, Socket>();
服务端增加字典 ,键代表 远程终结点,Socket 代表 与之通讯的套接字。跟不同终结点所对应的套接字通讯,这样1对多的通讯就完成了,群聊也可以实现了。
什么是套接字:想通讯就要用到网卡,网线,驱动,我们C# 实现底层语言做这些太难了,于是微软封装成了socket,我们实例化的每个socket对象就是一个套接字,
网络编程就是套接字与套接字之间交互。
socket两种通讯方式:流式(stream)和 数据报文(DataGram),流式用的是tcp协议,数据报文用的是Udp协议
TCP :安全,单连接,效率低
UDP:把数据拆成多分,多个连接传输,效率高,数据接收完需要验证。 socket 实际是对底层的封装,我们网络传输数据 至少要2根线,一进一出,socket 里面有 RemoteEndPoint(远程终结点) 和 LocalEndPoint(本地终结点) 分别代表网络的进,出关系。
就到这里。。。