窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 数组 | 备 注 |
server | 网络服务器 | |
client | 客户 | |
客户Duan句柄 | 整数型 | |
接收数据 | 文本型 | |
发送数据 | 文本型 | |
如果 (server.
启动 (到数值 (端口号编辑框.内容
)) =
真)
接收消息编辑框.
加入文本 (“服务器启动成功,端口号:” + 端口号编辑框.内容 +
#换行符 )
客户Duan句柄 = server.
监听 (5000
)
如果 (客户Duan句柄 ≠ -1
)

接收消息编辑框.
加入文本 (“客户进入,客户句柄:” +
到文本 (客户Duan句柄
) +
#换行符 )

时钟1.时钟周期 = 1000


接收消息编辑框.
加入文本 (“客户连接超时,服务器已关闭” +
#换行符 )

server.
停止 ()


接收消息编辑框.
加入文本 (“服务器启动失败” +
#换行符 )
如果 (server.
发送 (客户Duan句柄, 发送内容编辑框.内容, 500
) =
真)
接收消息编辑框.
加入文本 (“服务器发送:” + 发送内容编辑框.内容 +
#换行符 )
接收消息编辑框.
加入文本 (“服务器发送消息失败” +
#换行符 )
消息数据 =
到文本 (server.
接收 (客户Duan句柄, 500,
))
如果真 (消息数据 ≠
“”)
接收消息编辑框.
加入文本 (到文本 (取现行时间 ()) +
“收到客户Duan消息” + 消息数据 +
#换行符 )
如果 (server.
停止 () =
真)
时钟1.时钟周期 = 0

接收消息编辑框.
加入文本 (“服务器已关闭” +
#换行符 )
接收消息编辑框.
加入文本 (“服务器关闭失败” +
#换行符 )
[C#] 纯文本查看 复制代码
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();
}
}
}