直接开始吧,小白文章,多多指出错误。
ipconfig 查询本机的IP地址
一般知名端口号在0--1023,1024--625535都是我们可以使用的
netstat 可查看端口号是否被占用
首先做一个简单的服务器和客户端搭建,在VS上完成。
注意要引入以下命名空间
using System.Net.Sockets;
using System.Net;
1.搭建服务器
namespace TCP服务器端
{
class Programjin
{
static void Main(string[] args)
{
//创建一个服务器端
Socket serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//指定IP地址
IPAddress ipAddress =IPAddress.Parse("10.100.3.246");
//分配端口号
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress,10086);
//绑定IP地址和端口号
serverSocket.Bind(ipEndPoint);
//监听端口 参数表示处理连接的队列,0表示不限制
serverSocket.Listen(0);
//接收一个客户端连接
Socket clientSocket=serverSocket.Accept();
/*向客户端发送一个数据*/
string msg = "Hello client!你好";
//将数据转化为为字节,因为数据的发送是字节的形式
byte[] date=System.Text.Encoding.UTF8.GetBytes(msg);
//在创建的连接上发送数据回去
clientSocket.Send(date);
/*接收来自客户端的数据*/
//设置数据缓冲区的大小
byte[] dateBuff = new byte[1024];
//数据缓冲区中数据所占的长度
int count = clientSocket.Receive(dateBuff);
//将数据从字节转化为字符类型
string msgReceive = System.Text.Encoding.UTF8.GetString(dateBuff,0,count);
Console.WriteLine(msgReceive);
Console.ReadKey();
//关闭客户端服务器端连接
clientSocket.Close();
serverSocket.Close();
}
}
}
2.搭建客户端
namespace TCP客户端
{
class Program
{
static void Main(string[] args)
{
//创建客户端
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//与服务器进行连接
clientSocket.Connect(new IPEndPoint(IPAddress.Parse("10.100.3.246"), 10086));
//接受来自服务器的消息
byte[] dataBuff = new byte[1024];
//如果没有接收,程序会执行到这等待接收,然后再往下执行
int count = clientSocket.Receive(dataBuff);
string msg = System.Text.Encoding.UTF8.GetString(dataBuff, 0, count);
Console.WriteLine("接收到来自服务器的消息" + msg);
//向服务器发送消息
string msgSend = "Hello Server!你好,服务器";
byte[] data = System.Text.Encoding.UTF8.GetBytes(msgSend);
clientSocket.Send(data);
Console.ReadKey();
//关闭客户端
clientSocket.Close();
}
}
}
先运行服务器,再运行客户端,你会发现他们进行了连接,并发送了对话。
TCP的服务器端socket基本流程socket->bind->listen->accept->send/recv->closesocket
客户端基本流程socket->[bind->]->connect->send/recv->closesocket
当然啦,这个小例子只能接收发送就结束了,下一节再记录下异步处理对话,做一个聊天系统的小Demo出来