服务器端代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace Socket_Server
{
internal class Program
{
static void Main(string[] args)
{
Receive(10086);
}
static void Receive(int port)
{
try
{
Socket listener=new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(new IPEndPoint(IPAddress.Any, port));
listener.Listen(1000);
Console.WriteLine($"{DateTime.Now} Server started,listening to port {port}...");
while (true)
{
Socket socket = listener.Accept();
Console.WriteLine($"{DateTime.Now} Client connected,receiving data...");
byte[] buffer = new byte[1024];
int bytesReceived = socket.Receive(buffer);
string data = Encoding.UTF8.GetString(buffer, 0, bytesReceived);
Console.WriteLine($"{DateTime.Now} Received: {data}");
socket.Send(Encoding.UTF8.GetBytes("OK"));
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
}
catch(Exception ex)
{
Console.WriteLine($"{DateTime.Now}");
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
}
}
客户端代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace Socket_Client
{
internal class Program
{
static void Main(string[] args)
{
Send("Hello World !", "127.0.0.1", 10086);
}
static void Send(string data,string ip,int port)
{
try
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(new IPEndPoint(IPAddress.Parse(ip), port));
Console.WriteLine($"{DateTime.Now} Connected to server,sending data...");
byte[] buffer = new byte[1024];
buffer = Encoding.UTF8.GetBytes(data);
socket.Send(buffer);
byte[] buffer_reply=new byte[1024];
int bytesReceived = socket.Receive(buffer_reply);
Console.WriteLine($"{DateTime.Now} Received: {Encoding.UTF8.GetString(buffer_reply, 0, bytesReceived)}");
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
catch (Exception ex)
{
Console.WriteLine($"{DateTime.Now}");
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
}
}