C#聊天源码

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
private void Form1_Load(object sender, EventArgs e)
{
ip.Text = GetLocalIPv4Address().ToString();
}
Thread threadWatch = null; //负责监听客户端的线程
Thread thr = new Thread(pts);
thr.IsBackground = true;
//启动线程
thr.Start(socConnection);
Socket socketWatch = null; //负责监听客户端的套接字
// 获取本地IPv4地址
public IPAddress GetLocalIPv4Address()
{
IPAddress localIPv4 = null;
}
}
/// 发送信息到客户端的方法
private void sm(string arr)
{
//将输入的字符串转换成 机器可以识别的字节数组
byte[] ac = Encoding.UTF8.GetBytes(arr);
//向客户端发送字节数组信息
socConnection.Send(ac);
//将发送的字符串信息附加到显示框中
xsk.Items.Add("服务器:" + arr );
xsk.SelectedIndex = xsk.Items.Count - 1;
{
//判断是否是IPv4地址
if (ipAddress.AddressFamily == AddressFamily.InterNetwork) //AddressFamily.InterNetwork表示IPv4
}
}
}
客户端
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
}
private void 启动(object sender, EventArgs e)
{
//定义一个套接字用于监听客户端发来的信息 包含3个参数(IP4寻址协议,流式连接,TCP协议)
socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//获取本机所有的IP地址列表
IPAddress[] ipAddressList = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress ipAddress in ipAddressList)
}
/// 接收客户端发来的信息
private void rc(object socketClientPara)
{
Socket socketServer = socketClientPara as Socket;
}
//创建一个负责和客户端通信的套接字
Socket socConnection = null;
//监听客户端发来的请求
private void WatchConnecting()
{
while (true) //持续不断监听客户端发来的请求
{
ip.Text = GetLocalIPv4Address().ToString();
}
public IPAddress GetLocalIPv4Address()
{
IPAddress localIPv4 = null;
using System.Windows.Forms;
using .Sockets;
using System.Threading;
using ;
namespace khd
{
public partial class Form1 : Form
while (true)
{
//创建一个内存缓冲区 其大小为1024*1024字节 即1M
byte[] arr = new byte[1024 * 1024];
//将接收到的信息存入到内存缓冲区,并返回其字节数组的长度
}
//调用sm发送信息到客户端
private void 发送(object sender, EventArgs e)
{
sm(srk.Text.Trim());
srk.Text = "";
{
public Form1()
{
InitializeComponent();
//关闭对文本框的非法线程操作检查
TextBox.CheckForIllegalCrossThreadCalls = false;
//服务端发送信息 需要1个IP地址和端口号
IPAddress ipd = IPAddress.Parse(ip.Text.Trim()); //获取文本框输入的IP地址
//将IP地址和端口号绑定到网络节点endpoint上
int length = socketServer.Receive(arr);
//将机器接受到的字节数组转换为人可以识别的字符串
string str = Encoding.UTF8.GetString(arr, 0, length);
服务器
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
//将发送的字符串信息附加到显示框上
xsk.Items.Add("用户:" + str);
xsk.SelectedIndex = xsk.Items.Count - 1;
}
IPEndPoint port = new IPEndPoint(ipd, int.Parse(dk.Text.Trim())); //获取文本框上输入的端口号
//监听绑定的网络节点
socketWatch.Bind(port);
{
localIPv4 = ipAddress;
}
else
continue;
}
return localIPv4;
threadWatch.IsBackground = true;
//启动线程
threadWatch.Start();
//启动线程后显示框显示相应提示
xsk.Items.Add("服务器运行中!");
//将套接字的监听队列长度限制为20
socketWatch.Listen(20);
//创建一个监听线程
threadWatch = new Thread(WatchConnecting);
//将窗体线程设置为与后台同步
服务器通过自身IP并给定一个端口号,启动服务
客户端输入服务器IP和服务器给定的端口号,连接
便可进行通信了
所用控件:
两个按钮:发送(添加事件“发送”);《启动(添加事件“启动”)(服务器),连接(添加事件“连接”)》
3个输入框(textBox):ip;dk(端口);srk(聊天框)
1个列表框(listBox):xsk(显示框)
//获取本机所有的IP地址列表
IPAddress[] ipAddressList = Dns.GetHostAddresses(Dns.GetHostName());
{
socConnection = socketWatch.Accep#34;与服务器连接成功");
ParameterizedThreadStart pts = new ParameterizedThreadStart(rc);
{
public Form1()
{
InitializeComponent();
TextBox.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
using System.Text;
using System.Windows.Forms;
using .Sockets;
using System.Threading;
using ;
namespace khd
{
public partial class Form1 : Form
相关文档
最新文档