Socket基础个人理解(案例)

9 篇文章 3 订阅
1 篇文章 0 订阅

使用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服务端与客户端的通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值