马上注册,结交更多易友,享用更多功能,让你轻松玩转觅风论坛。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- .版本 2
- .支持库 sock
- .程序集 窗口程序集_启动窗口
- .程序集变量 server, 网络服务器
- .程序集变量 client, 客户
- .程序集变量 客户Duan句柄, 整数型
- .程序集变量 接收数据, 文本型
- .程序集变量 发送数据, 文本型
- .子程序 _启动监听按钮_被单击
- .如果 (server.启动 (到数值 (端口号编辑框.内容)) = 真)
- 接收消息编辑框.加入文本 (“服务器启动成功,端口号:” + 端口号编辑框.内容 + #换行符)
- 客户Duan句柄 = server.监听 (5000)
- .如果 (客户Duan句柄 ≠ -1)
- 接收消息编辑框.加入文本 (“客户进入,客户句柄:” + 到文本 (客户Duan句柄) + #换行符)
- 时钟1.时钟周期 = 1000
- .否则
- 接收消息编辑框.加入文本 (“客户连接超时,服务器已关闭” + #换行符)
- server.停止 ()
- .如果结束
- .否则
- 接收消息编辑框.加入文本 (“服务器启动失败” + #换行符)
- .如果结束
- .子程序 _发送按钮_被单击
- .如果 (server.发送 (客户Duan句柄, 发送内容编辑框.内容, 500) = 真)
- 接收消息编辑框.加入文本 (“服务器发送:” + 发送内容编辑框.内容 + #换行符)
- .否则
- 接收消息编辑框.加入文本 (“服务器发送消息失败” + #换行符)
- .如果结束
- .子程序 _时钟1_周期事件
- .局部变量 消息数据, 文本型
- 消息数据 = 到文本 (server.接收 (客户Duan句柄, 500, ))
- .如果真 (消息数据 ≠ “”)
- 接收消息编辑框.加入文本 (到文本 (取现行时间 ()) + “收到客户Duan消息” + 消息数据 + #换行符)
- .如果真结束
- .子程序 _关闭服务器按钮_被单击
- .如果 (server.停止 () = 真)
- 时钟1.时钟周期 = 0
- 接收消息编辑框.加入文本 (“服务器已关闭” + #换行符)
- .否则
- 接收消息编辑框.加入文本 (“服务器关闭失败” + #换行符)
- .如果结束
复制代码
- using System;
- using System.Net;
- using System.Net.Sockets;
- using System.Text;
- class Program
- {
- static void Main()
- {
- // 定义服务器的 IP 地址,这里使用本地回环地址,通常用于在同一台机器上进行测试
- string serverIP = "127.0.0.1";
- // 定义服务器监听的端口号
- int serverPort = 8888;
- // 使用 using 语句确保在代码执行完毕后正确释放 TcpClient 资源
- using (TcpClient client = new TcpClient())
- {
- // 尝试与指定的服务器 IP 地址和端口建立连接
- client.Connect(serverIP, serverPort);
- // 获取与服务器连接的网络流,通过这个流可以进行数据的发送和接收
- NetworkStream stream = client.GetStream();
- // 创建一个大小为 1024 的字节数组,用于接收服务器返回的数据
- byte[] buffer = new byte[1024];
- // 进入无限循环,持续接收服务器消息
- while (true)
- {
- // 从网络流中读取数据到缓冲区,并获取实际读取到的字节数量
- int bytesRead = stream.Read(buffer, 0, buffer.Length);
- // 将接收到的字节数组转换为字符串,同样使用 ASCII 编码方式,然后输出接收到的服务器响应内容
- string receivedData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
- Console.WriteLine("接收到服务端响应:" + receivedData);
- // 如果接收到的内容是 "exit",则退出循环
- if (receivedData == "exit")
- break;
- // 定义要发送给服务器的消息文本内容
- string messageToSend = "C#客户Duan发送的数据";
- // 将消息文本转换为字节数组,这里使用 ASCII 编码方式进行转换
- byte[] dataToSend = Encoding.ASCII.GetBytes(messageToSend);
- // 将字节数组写入网络流,从而将数据发送给服务器
- stream.Write(dataToSend, 0, dataToSend.Length);
- }
- // 关闭客户Duan连接,释放相关资源
- client.Close();
- }
- }
- }
复制代码
|
|