您的位置:首页 > 理论基础 > 计算机网络

网络编程SOCKET实现一对一网络聊天,Ctrl+F5

2017-09-12 11:46 423 查看
[align=left]usingSystem;[/align]
[align=left]usingSystem.Collections.Generic;[/align]
[align=left]usingSystem.Linq;[/align]
[align=left]usingSystem.Text;[/align]
[align=left]usingSystem.Threading.Tasks;[/align]
[align=left]usingSystem.Net;[/align]
[align=left]usingSystem.Net.Sockets;[/align]
[align=left]///<summary>[/align]
[align=left]///服务器[/align]
[align=left]///</summary>[/align]
[align=left]namespaceLesson2[/align]
[align=left]{[/align]
[align=left]   classProgram[/align]
[align=left]    {[/align]
       staticvoidMain(string[]
args)
[align=left]        {[/align]
[align=left]           //实例化类对象[/align]
           Programprogram
=newProgram();
           Console.WriteLine("请选择:1
服务器。 2 客户端。");
           stringinput
=Console.ReadLine();
           if(input
=="1")
[align=left]            {[/align]
[align=left]               Console.WriteLine("您的选择是服务器");[/align]
              // MyServer();如果想调用
需要把MyServer();共有静态方法
[align=left]              //调用服务器方法[/align]
[align=left]                program.MyServer();[/align]
[align=left]            }[/align]
           if(input
=="2")
[align=left]            {[/align]
[align=left]               Console.WriteLine("您的选择是客户端");[/align]
[align=left]               //调用客户端方法[/align]
[align=left]                program.Clinet();[/align]
[align=left]            }[/align]
[align=left]        }[/align]
[align=left]  [/align]
[align=left]       ///<summary>[/align]
[align=left]       ///服务端[/align]
[align=left]       ///</summary>[/align]
[align=left]   voidMyServer()[/align]
[align=left]    {[/align]
[align=left]       //1.创建socket[/align]
       Socketsocket
=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
[align=left]           //2.创建scoket和端口号使用bind方法[/align]
[align=left]           //192.168.25.159是自己的地址[/align]
           IPAddressipAddress
=IPAddress.Parse("192.168.XX.XXX");//("192.168.25.81");//("192.168.25.159");
           IPEndPointipEndPoint
=newIPEndPoint(ipAddress,
10001);
[align=left]            socket.Bind(ipEndPoint);[/align]
[align=left]           //3监听该端口号 listen[/align]
[align=left]           //监听35个客户端[/align]
[align=left]            socket.Listen(35);[/align]
[align=left]           //3.1接受来自客户端的请求[/align]
           byte[]
mybyte =newbyte[1024];
[align=left]           try[/align]
[align=left]            {[/align]
[align=left]               //阻塞的过程[/align]
[align=left]               SockettempSocket=socket.Accept();[/align]
[align=left]               while(true)[/align]
[align=left]                {[/align]
[align=left]                   //接受数据的长度,长度就是dataLength[/align]
                   intdataLength
= tempSocket.Receive(mybyte);
[align=left]                   //只取从0开始数据长度的一段信息,data是客户端发来的消息[/align]
                   stringdata
=Encoding.UTF8.GetString(mybyte,0, dataLength);
[align=left]                   Console.WriteLine("从客户端发来的消息为:"+data);[/align]
                   //通用字符集(Universal
Character Set)  UTF abbr. Unicode转换格式(UCS Transformation Format)
                   //发送一下数据     
编码   
                   byte[]
sendData =Encoding.UTF8.GetBytes("发送成功");
[align=left]                    tempSocket.Send(sendData);[/align]
[align=left]                }[/align]
[align=left]            }[/align]
[align=left]           catch(Exceptione)[/align]
[align=left]            {[/align]
[align=left]               Console.WriteLine(e.Message);[/align]
[align=left]               //throw;[/align]
[align=left]            }[/align]
[align=left]           finally{[/align]
[align=left]               //最后,执行,关闭Socket[/align]
[align=left]                socket.Close();[/align]
[align=left]            }[/align]
[align=left]        }[/align]
[align=left]   [/align]
[align=left]   //客户端[/align]
   voidClinet()
{
[align=left]           //1.创建socket[/align]
           Socketsocket
=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
[align=left]           //2.使用connect连接制定计算机的端口[/align]
[align=left]           //192.168.25.81服务器地址[/align]
           IPAddressipAddress
=IPAddress.Parse("192.168.XX.XXX");
           IPEndPointipEndPoint
=newIPEndPoint(ipAddress,
10001);
[align=left]            socket.Connect(ipEndPoint);[/align]
[align=left]       try[/align]
[align=left]        {[/align]
[align=left]               stringinput=string.Empty;[/align]
[align=left]           while(input!="2")[/align]
[align=left]            {[/align]
[align=left]                   //[/align]
[align=left]                   Console.WriteLine("请输入您要发送的信息");[/align]
                   stringmsg
=Console.ReadLine();
[align=left]                   //Empty,空的[/align]
                   if(msg!=string.Empty)//空的时候用双引号“”表示 
用null?
[align=left]                    {[/align]
[align=left]                       //3.发送数据[/align]
                       byte[]
sendData =Encoding.UTF8.GetBytes(msg);
[align=left]                        socket.Send(sendData);[/align]
[align=left]                       //接受到的数据[/align]
                       byte[]
receiveData =newbyte[1024];
                       intlength
= socket.Receive(receiveData);
                       stringstr
=Encoding.UTF8.GetString(receiveData,0,length);
[align=left]                       Console.WriteLine(str);[/align]
[align=left]                    }[/align]
                   Console.WriteLine("是否继续:1继续。
2:退出。");
[align=left]                    input =Console.ReadLine();[/align]
[align=left]            }[/align]
[align=left]        }[/align]
[align=left]       catch(Exceptione)[/align]
[align=left]        {[/align]
[align=left]           Console.WriteLine(e.Message);[/align]
[align=left]        }[/align]
[align=left]       finally{[/align]
[align=left]           //关闭[/align]
[align=left]            socket.Close();[/align]
[align=left]        }[/align]
[align=left]      [/align]
[align=left]    }[/align]
[align=left]    }[/align]
[align=left]}[/align]

socket是TCP/IP协议的API

TCP是数据的介质,Socket是TCP的介质.
随后会更新TCP一对一聊天室;
可爱的双斜杠很多,同学们很好理解的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: