socket服务器端和客户端通信
客户端
①创建客户端的socket
②发起建立连接的请求
③接受服务器端的消息
④向服务器端发送消息
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客户端
{
class Program
{
static void Main(string[] args)
{
//1.创建客户端的socket
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2.发起建立连接的请求
IPAddress ipaddress = IPAddress.Parse("10.135.2.4");
EndPoint point = new IPEndPoint(ipaddress, 5555);//要和服务器端的ip+端口号保持一致
tcpClient.Connect(point);
//3.接受服务器端的消息
byte[] data= new byte[1024];//需要将接收到的数据存到byte数组中,所以先定义一个byte数组
int length=tcpClient.Receive(data);//与服务器端的send方法对应,length表示接收到的数据的字节长度
String message = Encoding.UTF8.GetString(data,0,length);//这里只需要取0到length长度的字节,后面的是空的
Console.WriteLine("接收到来自服务器端的消息:"+message);
//4.向服务器端发送消息
String message2 = Console.ReadLine();
byte[] data2 = Encoding.UTF8.GetBytes(message2);
tcpClient.Send(data2);
Console.ReadKey();
}
}
}
服务器
①创建服务器端的socket
②绑定ip和端口号
③开始监听
④获取客户端的socket
⑤向客户端发送消息
⑥接受客户端的消息
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服务器端
{
class Program
{
static void Main(string[] args)
{
//1.创建服务器端的socket
Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2.绑定ip和端口号10.135.2.4
IPAddress ipaddress =IPAddress.Parse("10.135.2.4");
EndPoint point = new IPEndPoint(ipaddress, 5555);//ipendpoint是对ip+端口号做了一层封装
tcpServer.Bind(point);
//3.开始监听,等待客户端连接
tcpServer.Listen(100);//100表示最多允许100个客户端进行连接
Console.WriteLine("开始监听");
//4.获取客户端的socket
Socket clientSocket = tcpServer.Accept();//accept的返回值是客户端的socket
Console.WriteLine("客户端已连接");
//5.向客户端发送消息
String message = "你好,客户端";
byte[] data = Encoding.UTF8.GetBytes(message);//将字符串转为字节,因为通信只能传递字节
clientSocket.Send(data);//向客户端发送消息
Console.WriteLine("向客户端发送消息");
//6.接收客户端的消息
byte[] data2 = new byte[1024];//需要将接收到的数据存到byte数组中,所以先定义一个byte数组
int length = clientSocket.Receive(data2);//与服务器端的send方法对应,length表示接收到的数据的字节长度
String message2 = Encoding.UTF8.GetString(data2, 0, length);
Console.WriteLine("接收到来自客户端的消息:"+message2, 0, length);
Console.ReadKey();
}
}
}