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

c# socket tcp服务器端连接客户端精简实例

2018-02-16 17:04 399 查看
为了助于理解tcp连接核心,没有写上多余的代码。
使用方法:建立两个控制台,将以下代码copy上,即可实现。
效果:客户端的连接上后,服务器端会出现“服务器接收到了相应”,同时客户端会出现服务器端发送过来的信息“接收到了”。
代码如下:
服务器端:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;

namespace ServerTest
{
class Program
{
private IPEndPoint ipEndPoint;
private Socket serverSocket;
private Socket clientSocket;
static Program p = new Program();
private byte[] data = new byte[1024];
static void Main(string[] args)
{
p.ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6688);
p.serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
p.serverSocket.Bind(p.ipEndPoint);
p.serverSocket.Listen(0);
p.serverSocket.BeginAccept(p.CallBack, null);
Console.WriteLine("服务器接收到了相应");
Console.ReadLine();
}
private void CallBack(IAsyncResult ar)
{
clientSocket = serverSocket.EndAccept(ar);
clientSocket.Send(Encoding.UTF8.GetBytes("接收到了"));
serverSocket.BeginAccept(p.CallBack, null);
}
}
}客户端:using System;
using System.Threading;
using System.Net.Sockets;
namespace ConsoleApp4
{
class Program
{
private const string IP = "127.0.0.1";
private const int PORT = 6688;
private Socket clientSocket;
private byte[] data = new byte[1024];
static Program p = new Program();
static void Main(string[] args)
{
Console.WriteLine("开始");
p.clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
p.clientSocket.Connect(IP, PORT);
p.clientSocket.BeginReceive(p.data, 0,p.data.Length, SocketFlags.None, p.CallBack, null);
}

private void CallBack(IAsyncResult ar)
{
p.clientSocket.EndReceive(ar);
Console.WriteLine(System.Text.Encoding.UTF8.GetString(p.data));
}

}
}
简言之:
对于客户端:创建socket、连接ip与端口、开始异步接收数据(BeginReceive);
对于服务器端:创建socket、绑定ip与端口、开启监听状态、开始异步接收数据(BeginAccept)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: