C#语言笔记13

socket编程

tcp协议

服务器端

使用socket类,先包含

using System.Net.Sockets;
传递参数

Socket tcp = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
第一个参数表示使用inter网络,第二个表示用什么流来传输,第三个表示使用什么协议

局域网ip一般是192.168.x.xx

using System.Net;

EndPoint point = new IPEndPoint();

//传递两个参数,一个是IPAddress 的对象,一个是端口号

IPAddress iPAddress = new IPAddress(new byte[] { 192, 168, 31, 70 });

只需传递一个byte类型的数组,数组里分别写上ip的四位数字,0·255之间

Encoding.UTF8.GetBytes(massge);对字符串做编码,返回字符串的字节数组

使用send方法传递字节数据,使用receive方法获取字节数据

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using System.Net;

namespace socket
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建socket
            Socket tcp = new Socket
            (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //绑定IP和端口号  192.168.31.70
            IPAddress iPAddress = new IPAddress(new byte[] { 192, 168, 31, 70 });
            EndPoint point = new IPEndPoint(iPAddress, 2233);
            //对Ip+端口做了一层封装类
            //EndPoint是一个抽象类,IPEndPoint去实现这个抽象类
            tcp.Bind(point);//向操作系统申请一个可用的ip和端口号用来做通信

            //开始监听,等待客户端做连接
            tcp.Listen(100);//参数是最大连接数

            Socket backSocket = tcp.Accept();//会让当前线程,直到接收到客户端连接。
            //将socket通讯由tcp交给backScoket
            //使用返回的socket和客户端做通讯
            string massge = "Hello Word";
            byte[] massgeBytes = Encoding.UTF8.GetBytes(massge);
            //对字符串做编码,得到一个字符串的字节数组
            backSocket.Send(massgeBytes);//只能传输一个byte数组,所以我们得把这个字符串转成一个byte数组

            byte[] data = new byte[1024];
            int length = backSocket.Receive(data);
            string res = Encoding.UTF8.GetString(data, 0, length);
            Console.WriteLine(res);
        }
    }
}

客户端

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace learn
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个socket
            Socket tcp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //客户端不需要去监听
            //发起建立连接的请求
            IPAddress iPAddress = IPAddress.Parse("192.168.31.70");
            //Parse可以把一个字符串的ip地址转化成一个ipaddress的对象
            EndPoint endPoint = new IPEndPoint(iPAddress, 2233);

            tcp.Connect(endPoint);//通过ip+端口定位一个要连接的服务端

            byte[] data = new byte[1024];
            int length = tcp.Receive(data);//传递一个byte数组用来接收数据
            //用来接收消息
            //length表示接受到多少数据
            string massegeBack = Encoding.UTF8.GetString(data, 0, length);
            //默认情况下会把所以byte的数据进行转化,
            //但我们只需要转换接受到的数据,
            //所以0,length代表从0开始到length为止的数据长度
            //也就是我们接受到的数据
            Console.WriteLine(length);//这里的长度一般都是字符的长度
            Console.WriteLine(massegeBack);

            //向服务器端发送消息
            string toMassge = Console.ReadLine();//用户输入
            tcp.Send(Encoding.UTF8.GetBytes(toMassge));
            //把字符串转换成字节数组发送到服务器端
            Console.ReadKey();
        }
    }
}

Unity聊天室

需要插件NGUI

NGUI v3.12.0.rar - 蓝奏云文件大小:12.5 M|https://wwm.lanzouw.com/iUxJD001acwb

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值