C#写一个可以聊天及收发文件的软件的服务端和客户端
时间: 2024-02-13 09:05:29 浏览: 30
以下是一个基本的C#聊天和文件传输软件的服务端和客户端示例代码:
服务端:
```csharp
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
namespace ChatServer
{
class Program
{
static TcpListener listener;
static void Main(string[] args)
{
listener = new TcpListener(IPAddress.Any, 8888);
listener.Start();
Console.WriteLine("服务器已启动,等待客户端连接...");
while (true)
{
TcpClient client = listener.AcceptTcpClient();
Thread t = new Thread(new ParameterizedThreadStart(HandleClient));
t.Start(client);
}
}
static void HandleClient(object obj)
{
TcpClient client = (TcpClient)obj;
Console.WriteLine("客户端已连接:" + client.Client.RemoteEndPoint.ToString());
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
int bytesRead;
while (true)
{
bytesRead = 0;
try
{
bytesRead = stream.Read(buffer, 0, 1024);
}
catch
{
break;
}
if (bytesRead == 0)
{
break;
}
string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine("收到消息:" + message);
byte[] data = Encoding.UTF8.GetBytes("收到消息:" + message);
stream.Write(data, 0, data.Length);
}
client.Close();
Console.WriteLine("客户端已断开连接:" + client.Client.RemoteEndPoint.ToString());
}
}
}
```
客户端:
```csharp
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ChatClient
{
class Program
{
static TcpClient client;
static void Main(string[] args)
{
Console.WriteLine("请输入服务器IP地址:");
string ip = Console.ReadLine();
Console.WriteLine("请输入服务器端口号:");
int port = int.Parse(Console.ReadLine());
client = new TcpClient();
client.Connect(IPAddress.Parse(ip), port);
Console.WriteLine("已连接服务器:" + client.Client.RemoteEndPoint.ToString());
while (true)
{
Console.WriteLine("请输入要发送的消息:");
string message = Console.ReadLine();
byte[] data = Encoding.UTF8.GetBytes(message);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
data = new byte[1024];
string responseData = string.Empty;
int bytes = stream.Read(data, 0, data.Length);
responseData = Encoding.UTF8.GetString(data, 0, bytes);
Console.WriteLine(responseData);
}
client.Close();
}
}
}
```
这段代码实现了一个基本的聊天功能,当客户端发送消息时,服务端会将其输出并回复客户端“收到消息:XXX”。 若要实现文件传输功能,需要在代码中添加相应的逻辑。