0
点赞
收藏
分享

微信扫一扫

Socket通讯成功案例TCP/UDP

Socket通讯成功案例TCP/UDP

1、服务端

新建控制台应用程序ConsoleUDPServer,代码如下:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace ConsoleUDP
{
class Program
{
static void Main(string[] args)
{

Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("服务端。。。");
Console.ForegroundColor = ConsoleColor.Gray;
#region TCP/IP
//int port = 1234;
//string host = "127.0.0.1";

//IPAddress ip = IPAddress.Parse(host);
//IPEndPoint ipe = new IPEndPoint(ip, port);

//Socket sSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//sSocket.Bind(ipe);
//sSocket.Listen(0);
//Console.WriteLine("监听已经打开,请等待");
//Socket serverSocket = null;
//try
//{
// //receive message
// serverSocket = sSocket.Accept();
// Console.WriteLine("连接已经建立");
// string recStr = "";
// byte[] recByte = new byte[4096];
// while (serverSocket != null)
// {
// int bytes = serverSocket.Receive(recByte, recByte.Length, 0);
// recStr = Encoding.Default.GetString(recByte, 0, bytes);

// //send message
// Console.WriteLine("服务器端收到来自client数据:{0}", recStr);
// string sendStr = $"send to client :{recStr}";
// byte[] sendByte = Encoding.Default.GetBytes(sendStr);
// serverSocket.Send(sendByte, sendByte.Length, 0);
// Thread.Sleep(TimeSpan.FromSeconds(2));
// }
//}
//catch (Exception)
//{
//}
//finally
//{
// serverSocket.Close();
// sSocket.Close();
//}

//Console.ReadLine();
#endregion

#region UDP

int port = 1234;
string host = "127.0.0.1";

IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
//udp需要注释用该句话SocketType.Stream => SocketType.Dgram,ProtocolType.Tcp => ProtocolType.Udp
Socket sSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sSocket.Bind(ipe);
//sSocket.Listen(0);//udp需要注释用该句话
Console.WriteLine("监听已经打开,请等待");
try
{
//receive message
//serverSocket = sSocket.Accept();//udp需要注释用该句话
Console.WriteLine("连接已经建立");
string recStr = "";
byte[] recByte = new byte[4096];
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 0);
EndPoint endP = (EndPoint)endPoint;
while (true)
{
int bytes = sSocket.ReceiveFrom(recByte, ref endP);
recStr = Encoding.Default.GetString(recByte, 0, bytes);

//send message
Console.WriteLine("服务器端收到来自client数据:{0}", recStr);
string sendStr = $"send to client :{recStr}";
byte[] sendByte = Encoding.Default.GetBytes(sendStr);
//serverSocket.Send(sendByte, sendByte.Length, 0);
sSocket.SendTo(sendByte,0, sendByte.Length,SocketFlags.None, endP);
Thread.Sleep(TimeSpan.FromSeconds(2));
}
}
catch (Exception)
{
}
finally
{
sSocket.Close();
sSocket.Close();
}

Console.ReadLine();
#endregion
}
}
}

 

2、客户端

新建控制台应用程序ConsoleUDPClient,代码如下:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace ConsoleUDPClient
{
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("客户端。。。");
Console.ForegroundColor = ConsoleColor.Gray;
#region TCP/IP

//int port = 1234;
//string host = "127.0.0.1";//服务器端ip地址

//IPAddress ip = IPAddress.Parse(host);
//IPEndPoint ipe = new IPEndPoint(ip, port);

//Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//clientSocket.Connect(ipe);

//string sendStr="client000 ";
//int i = 0;
//while (true)
//{
// try
// {
// //send message
// sendStr = $"客户端数据:{++i}";
// Console.WriteLine($"sendStr:{sendStr}");
// byte[] sendBytes = Encoding.Default.GetBytes(sendStr);
// clientSocket.Send(sendBytes);

// //receive message
// string recStr = "";
// byte[] recBytes = new byte[4096];
// int bytes = clientSocket.Receive(recBytes, recBytes.Length, 0);
// recStr += Encoding.Default.GetString(recBytes, 0, bytes);
// Console.WriteLine($"recStr:{recStr}");
// Thread.Sleep(TimeSpan.FromSeconds(2));
// }
// catch (Exception)
// {
// }
//}
#endregion
#region UDP

int port = 1234;
string host = "127.0.0.1";//服务器端ip地址

IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ipe1 = new IPEndPoint(IPAddress.Any, 0);
EndPoint ipend = (EndPoint)ipe1;
int i = 0;
while (true)
{
try
{
string sendStr = $"客户端数据:{++i}";
Console.WriteLine($"sendStr:{sendStr}");
byte[] sendBytes = Encoding.Default.GetBytes(sendStr);
clientSocket.SendTo(sendBytes, 0, sendBytes.Length, SocketFlags.None, ipe);
//receive message
string recStr = "";
byte[] recBytes = new byte[4096];
int bytes = clientSocket.ReceiveFrom(recBytes, ref ipend);
recStr += Encoding.Default.GetString(recBytes, 0, bytes);
Console.WriteLine($"recStr:{recStr}");
Thread.Sleep(TimeSpan.FromSeconds(2));
}
catch (Exception)
{
}
}
#endregion
}
}
}

 

龙腾一族至尊龙骑

举报

相关推荐

0 条评论