基于Socket的聊天室源程序

基于Socket的聊天室源程序

基于Socket的聊天室源程序:聊天室主要由聊天室服务器和聊天室客户端组成。聊天室服务器负责管理与客户端的连接并发送消息给客户端;客户端负责接收或者发送聊天消息,登录聊天室服务器等。
代码分客户端和服务器端代码。
  • 客户端主要流程:
启动聊天服务器-->启动监听器-->等待-->接受客户端连接-->启动客户数据接收线程
客户数据接收线程:当保持连接且SocketServiceFlag为True时读取数据并解析命令,一直循环这个过程直到收到退出命令。共五种命令,CONN命令,LIST命令, CHAT命令, PRIV命令, EXIT命令
CONN命令:向全部用户发送JOIN命令,向当前用户(自己)发送LIST命令
LIST命令:向当前用户发送LIST命令
CHAT命令:向全部用户发送CHAT命令
PRIV命令: 向接收者发送数据,向发送者发送数据
EXIT命令:删除用户数据,向全部用户发送QUIT命令

源代码下载:点击下载
该代码来自《C#网络与通信程序设计案例精讲》 (吴晨,陈建孝;清华大学出版社)中的源代码。具体的设计过程可参考该书。代码为C#语言编写。


代码中关于C#的知识点:
  • String转成int
string port;
int lport;
lport=System.Convert.ToInt32(port);
  • int转成String
this.tbSocketClientNum.Text = System.Convert.ToString(clients.Count);
  • String转成Byte[]数组
string msg;
System.Byte[] message=System.Text.Encoding.Default.GetBytes(msg.ToCharArray());
  • Byte[]数组转成String
byte[] buff=new byte[1024];
string clientCommand=System.Text.Encoding.Default.GetString(buff, 0, len);//第二个参数为index
  • 抛出异常
throw new ArgumentException("端口号为空,不能启动服务器");

  • 向RichTextBox追加文本
private System.Windows.Forms.RichTextBox rtbSocketMsg;
this.rtbSocketMsg.AppendText("无效的端口号:" + e.ToString()+"\n");

  • 获得本机局域网IP地址
using System.Net;

IPAddress[] AddressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
if (AddressList.Length<1)
{
	return "";
}
return AddressList[0].ToString();

  • Socket监听
using System.Net.Sockets;

//该服务器默认的监听的端口号
private TcpListener listener;
IPAddress ipAdd=IPAddress.Parse(ip);
//创建服务器套接字
listener=new TcpListener(ipAdd, port);
//开始监听服务器端口
listener.Start();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值