C# socket网络编程 基于TCP协议

socket 服务器端:

1.创建socket

Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//三个参数分别为枚举类型(网络),Socket类型,协议

2.绑定ip和端口号

IPAddress ipAddress = new IPAddress(new byte[] {192,168,119,1});

EndPoint point =new IPEndPoint(ipAddress,8811);

tcpServer .Bind(point);//绑定方法Bind(),IPEndPoint()封装ip和端口

3.开始监听

tcpServer.Listen(100);//参数为最大连接数

4.接收客户端

Socket clientSocket= tcpServer.Accept();

5.给客户端发信息

string message = "hello welcome!";

byte[] date = Encoding.UTF8.GetBytes(message);//Encoding()转码

clientSocket.Send(date);

6.接收客户端信息

byte[] date2=new byte[1024];

int length = clientSocket.Receive(date2);

string message2 = Encoding.UTF8.GetString(date2, 0, length);

Console.WriteLine("客户端发信息过来:"+message2);

代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Net.Sockets;

using System.Text;

namespace SocketServer

{

class Program

{

static void Main(string[] args)

{

Socket tcpServer =new Socket( AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);

IPAddress ipAddress = new IPAddress(new byte[] {192,168,191,1});

EndPoint point =new IPEndPoint(ipAddress,8811);

tcpServer .Bind(point);

tcpServer.Listen(100);

Console.WriteLine("开始监听");

Socket clientSocket= tcpServer.Accept();

Console.WriteLine("一个客户端链接过来");

string message = "hello welcome!";

byte[] date = Encoding.UTF8.GetBytes(message);

clientSocket.Send(date);

byte[] date2=new byte[1024];

int length = clientSocket.Receive(date2);

string message2 = Encoding.UTF8.GetString(date2, 0, length);

Console.WriteLine("客户端发信息过来:"+message2);

Console.ReadKey();

}

}

}

socket 客户端

1.创建socket

2.发起请求

tcpClient.Connect();

3.接收服务器端信息

4.向服务器端发信息

代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Net.Sockets;

using System.Text;

namespace SocketClient

{

class Program

{

static void Main(string[] args)

{

Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

IPAddress ipAddress=new IPAddress(new byte[]{192,168,191,1});

EndPoint point =new IPEndPoint(ipAddress,8811);

tcpClient.Connect(point);

byte[] date = new byte[1024];

int length= tcpClient.Receive(date);

string message = Encoding.UTF8.GetString(date, 0, length);

Console.WriteLine("服务器端发过来的信息:"+message);

string message2 = Console.ReadLine();

tcpClient.Send(Encoding.UTF8.GetBytes(message2));

Console.ReadKey();

}

}

}