博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Socket网络编程学习笔记
阅读量:5950 次
发布时间:2019-06-19

本文共 1904 字,大约阅读时间需要 6 分钟。

1 服务器 发送消息和接受消息的代码

namespace Socket_编程_tcp协议_服务端

{
class Program
{
static void Main(string[] args)
{
//1.创建服务端socket类
Socket tcpServer = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//2.绑定IP和端口号 192.168.155.1
IPAddress ipaddress = new IPAddress(new byte[]{192,168,155,1});
EndPoint point = new IPEndPoint(ipaddress,7788); //ipendpoint是对ip+端口号做了一次封装的类
tcpServer.Bind(point); //这是向操作系统申请一个可用的ip跟端口号 用来做通信
//3.开始监听等待客户端做连接
tcpServer.Listen(100); //参数是最大连接数
Console.WriteLine("开始监听");
Socket clientSocket = tcpServer.Accept(); //暂停当前线程,直到有一个客户端连接过来,之后进行下面的代码
//使用返回的socket跟客户端做通信
Console.WriteLine("客户端连接过来了");

string message = "hello欢迎连接";

byte[] data = Encoding.UTF8.GetBytes(message);//对字符串做二进制的编码得到一个字符串的字节数组
clientSocket.Send(data);
Console.WriteLine("向客户端发送了一条数据");
//接受消息
byte[] data2 = new byte[1024]; //创建一个字节数组容器来接受客户端发送过来的消息
int length = clientSocket.Receive(data2);
string message2 = Encoding.UTF8.GetString(data2, 0, length);
Console.WriteLine("接受到了一条消息"+message2);
Console.ReadKey();
}
}
}

 

2:客户端向服务端发送消息和接受消息代码

 

namespace Socket编程_tcp协议_客户端

{
class Program
{
static void Main(string[] args)
{
//1.创建socket
Socket tcpClient = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//2.发起建立连接的请求
IPAddress ipAddress = new IPAddress(new byte[] {192, 168, 155, 1 }); //用来存储ip地址
EndPoint point = new IPEndPoint(ipAddress,7788); //用来指用来指定IP地址和端口数据
tcpClient.Connect(point); //与主机建立连接 通过ip和端口号
//
byte[] data = new byte[1024]; //定义一个byte类型的数组

int length = tcpClient.Receive(data); //接受数据 byte类型的数组,这个data是用来接受数据的

// length 表示接受了多少字节的数据
string message = Encoding.UTF8.GetString(data,0,length);
Console.WriteLine(message);

//1、服务器端发送消息

string message2 = Console.ReadLine(); //读取用户的输入 把输入发送到服务器端
byte[] date = Encoding.UTF8.GetBytes(message2); //把字符串转化成字符数组
tcpClient.Send(date);
Console.ReadKey();
}
}
}

转载于:https://www.cnblogs.com/ylllove/p/6819113.html

你可能感兴趣的文章
N26-第二周作业
查看>>
关于一阶逻辑中实例化的可满足性问题
查看>>
cut命令用法讲解
查看>>
我的第一篇日志。
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
企业实战:mysql5.6数据库备份、恢复脚本
查看>>
RabbitMQ(消息队列)Linux安装相关问题解决
查看>>
我的友情链接
查看>>
CentOS7安装mysql
查看>>
RMB數字轉換中文
查看>>
基于rhel7.2的Zabbix平台搭建和部署(二)
查看>>
Html5本地存储和本地数据库
查看>>
我的友情链接
查看>>
JQ 循环切换DIV
查看>>
Nagios监控NetAPP NAS存储容量,Volume、Qtree
查看>>
Android Fragment实践(二)
查看>>
centos 修改主机名立即生效和重启后也生效的方法
查看>>
Windows 64 位 mysql 5.7以上版本包解压安装
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>