使用TCP的HelloServer
Socket的介绍
Socket类
构造函数定义:
public Socket
{
AddressFamily addressFamily,//制定Socket中的解析地址的寻址方案,ip网络用addressFaily.InterNetwork
SocketType socketType,//指定Socket类型,TCP用SoocketType.Stream,UDP使用SocketType.Dgram
ProtocolType protocolTyppe//指定Socket类支持的协议。除了常见的ProtocolType.Tcp和ProtocolType.Udp,还有许多,例如IPv6
};
Socket类中的方法:
Bind();
Listen();
Accept();
发送数据Rend();
接受数据Receive();
禁用Socket的发送接受Shutdown();
释放Socket:Close();
小伙子们,挽起袖子撸代码(第一个HelloServer程序)
创建控制台程序——服务端
哦吼~~~~~
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace sockerService
{
class MainClass
{
static void Main(string[] args)
{
//创建socket,包含三个参数、
Socket tcpServer = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//绑定IP
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");//IP
//绑定端口号
IPEndPoint point = new IPEndPoint(ipAddress, 891); //绑定端口
//申请一个可用端口
tcpServer.Bind(point);
//设置最大连接数
tcpServer.Listen(100);
Console.WriteLine("等待连接中......");
//等待用户连接
Socket clientSocket = tcpServer.Accept();
string message = "hello,欢迎你";
Console.WriteLine("一个用户已连接......");
//将message转换成恒字节格式,<UTF8><https://baike.baidu.com/item/UTF-8/481798?fr=aladdin>
Byte[] data = Encoding.UTF8.GetBytes(message);
//将转换完的字节数组发送到客户端
clientSocket.Send(data);
//定义第二个数组来接受客户端发送的消息
Byte[] data2 = new byte[1024];
//记录接受到信息的长度
int length2 = clientSocket.Receive(data2);
//将接受到的字节文件转换成string类型·
string message3 = Encoding.UTF8.GetString(data2,0,length2);
Console.WriteLine(message3);
Console.ReadKey();
}
}
}
创建控制台程序——客户端
哦吼~
using System;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System.Text;
using System.Threading.Tasks;
namespace sockrtInfo
{
class MainClass
{
public static void Main(string[] args)
{
//1.创建socket
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//可以吧一个字符串的IP地址转换成一个IPADDRESS的对象
IPAddress ipaddress = IPAddress.Parse("127.0.0.1");
EndPoint point = new IPEndPoint(ipaddress, 891);
//2/发起建立连接的请求
tcpClient.Connect(point);//通过 IP+端口号定位到一个需要连接的服务器端
byte[] data = new byte[1024];
//这里传递一个BYTE数组,实际上是这个数组来接受数据
int length = tcpClient.Receive(data);
//只把接受到的数据转换
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine(message);
//向服务器发送消息
string message2 = Console.ReadLine();
tcpClient.Send(Encoding.UTF8.GetBytes(message2));
tcpClient.Close();
Console.ReadKey();
}
}
}
运行结果
在客户端控制台中输入“哦吼”,服务端会跟着输出“哦吼”,嘻嘻
到此,就实现了一个最简单的TCP服务端与客户端的通信。