首先我们需要新建一个socket
//定义一个Socket
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
这三个参数分别是选择ipv4或者是ipv6,第二个是选择socket传输数据类型 Dgram是数据包UDP协议常用,Stream是数据流,TCP
常用,第三个参数就是选择网络协议类型。
接下来我们开始绑定ip和端口号
IPAddress iPAddress = IPAddress.Parse("192.168.1.5");
IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, 8989);
//绑定ip和端口号
serverSocket.Bind(iPEndPoint);
将你的IP和端口号绑定上去即可
接下来我们就开始监听这个socket连接的状态,如果有通信的话我们就可以进行消息处理
//开始监听端口号
serverSocket.Listen(0);
//接收一个连接
Socket clientSocket = serverSocket.Accept();
string msg = "Hellow World! 你好";
//转换消息
byte[] data = Encoding.UTF8.GetBytes(msg);
//发送消息
clientSocket.Send(data);
Listen这个监听的方法的参数代表等待个数,而不是连接个数,0代表没有等待个数,多少都可以。
然后使用Accept这个方法产生一个新的和客户端连接的socket(如果没有连接,代码会停留在监听的的部分等待,直到有客户端连接才会执行下面的代码)。
后面就是将我们的消息转换成字节流发送给客户端,通过Send()方法,转换字符串这里使用了UTF8的格式GetBytes()方法,这个格式可以转换中文,同样的接受也需要使用UTF8的格式使用GetString()方法接受。
下面我们就要在服务器接收客户端发送的消息了
//接收消息
byte[] dataBuffer = new byte[1024];//开辟接收空间
int count = clientSocket.Receive(dataBuffer);//获取消息的字节长度
string msgReceive = System.Text.Encoding.UTF8.GetString(dataBuffer, 0, count);//读取从0开始到字节长度部分的数据,将多余的空白字节踢去
//输出接收的信息
Console.WriteLine(msgReceive);
//关闭连接
clientSocket.Close();//关闭和客户端Accept产生的Socket连接
serverSocket.Close();//关闭自己的Socket连接
完整代码
/// <summary>
/// 同步接收数据
/// </summary>
void StartSeverSync()
{
//定义一个Socket
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//本机ip:192.168.1.5
// IPAddress iPAddress = new IPAddress (new byte[] { 192,168,1,5 });
IPAddress iPAddress = IPAddress.Parse("192.168.1.5");
IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, 8989);
//绑定ip和端口号
serverSocket.Bind(iPEndPoint);
//开始监听端口号
serverSocket.Listen(0);
//接收一个连接
Socket clientSocket = serverSocket.Accept();
string msg = "Hellow World! 你好";
//转换消息
byte[] data = Encoding.UTF8.GetBytes(msg);
//发送消息
clientSocket.Send(data);
//接收消息
byte[] dataBuffer = new byte[1024];
int count = clientSocket.Receive(dataBuffer);
string msgReceive = System.Text.Encoding.UTF8.GetString(dataBuffer, 0, count);
Console.WriteLine(msgReceive);
//关闭连接
clientSocket.Close();
serverSocket.Close();
}