TCP返回信号

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

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Server(10086); //监听10086端口
}

/// <summary>
/// 服务器端
/// </summary>
/// <param name="port"></param>
static void Server(int port)
{
try
{
//1.监听端口
TcpListener server = new TcpListener(IPAddress.Any, port);
server.Start();
Console.WriteLine("{0:HH:mm:ss}->监听端口{1}...", DateTime.Now, port);

//2.等待请求
while (true)
{
try
{
//2.1 收到请求
TcpClient client = server.AcceptTcpClient(); //停在这等待连接请求
IPEndPoint ipendpoint = client.Client.RemoteEndPoint as IPEndPoint;
NetworkStream stream = client.GetStream();

//2.2 解析数据,长度<1024字节
string data = string.Empty;
byte[] bytes = new byte[1024];
int length = stream.Read(bytes, 0, bytes.Length);
if (length > 0)
{
data = Encoding.Default.GetString(bytes, 0, length);
Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);
}

//2.3 返回状态
byte[] messages = Encoding.Default.GetBytes("ok.");
stream.Write(messages, 0, messages.Length);

//2.4 关闭客户端
stream.Close();
client.Close();
}
catch (Exception ex)
{
Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);
}
}
}
catch (SocketException socketEx)
{
//10013 The requested address is a broadcast address, but flag is not set.
if (socketEx.ErrorCode == 10013)
Console.WriteLine("{0:HH:mm:ss}->启动失败,请检查{1}端口有无其他程序占用.", DateTime.Now, port);
else
Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, socketEx.Message);
}
catch (Exception ex)
{
Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);
}
Console.ReadKey();
}
}
}

2.客户端代码

复制内容到剪贴板 程序代码
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Client("192.168.1.100", 10086, "mzwu.com"); //发送数据
}

/// <summary>
/// 客户端
/// </summary>
/// <param name="ip"></param>
/// <param name="port"></param>
/// <param name="message"></param>
static void Client(string ip, int port, string message)
{
try
{
//1.发送数据
TcpClient client = new TcpClient(ip, port);
IPEndPoint ipendpoint = client.Client.RemoteEndPoint as IPEndPoint;
NetworkStream stream = client.GetStream();
byte[] messages = Encoding.Default.GetBytes(message);
stream.Write(messages, 0, messages.Length);
Console.WriteLine("{0:HH:mm:ss}->发送数据(to {1}):{2}", DateTime.Now, ip, message);

//2.接收状态,长度<1024字节
byte[] bytes = new Byte[1024];
string data = string.Empty;
int length = stream.Read(bytes, 0, bytes.Length);
if (length > 0)
{
data = Encoding.Default.GetString(bytes, 0, length);
Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);
}

//3.关闭对象
stream.Close();
client.Close();
}
catch (Exception ex)
{
Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);
}
Console.ReadKey();
}
}
}

posted @ 2021-10-10 16:43  limitpjz  阅读(80)  评论(0编辑  收藏  举报