• λ我爱Aspx >> Asp.Net >> 基于Winsock 的小型网络管理系统及其实现
  • 基于Winsock 的小型网络管理系统及其实现

  • :未知  Դ:internet  :2007-5-5 19:52:19  ؼ:
  • Load Winsock1(cur) '生成新的' Winsock

    Winsock1(cur).LocalPort = 0

    Winsock1(cur).Accept requestID '接收

    onl(cur, 0) = 0 'Winsock(cur)被占用

    End If

    End Sub

    之后,服务器利用生成的Winsock(i)与第i个用户通信。

    3.3 小型邮件系统

    我们建立了用户数据库和邮件数据库,在前面叙述的用户登录的实现下,进行用户的邮件管理;此时涉及到数据管理。数据库结构如下:

    ⑴用户数据库结构:

    userid 用户编号

    name 用户名

    chinesename 姓名

    code 口令

    pp 权限

    dscrp 描述

    ⑵邮件数据库结构:

    Msgid 消息编号

    Receiver 接收者

    Sender 发送者

    Style 类型

    Word 消息文字

    Get 接收否

    Sj 消息得到时间

    bj 消息附属信息

    当用户登录后,服务器从邮件数据库中提取Receiver是该用户并且消息为新(Get字段值为“新”)的记录,把之打包,利用用户Winsock对象发送。

    服务器同时提供客户的命令要求,然后对之进行相应的操作:

    客户命令格式:

    邮件命令 Chr(13)

    回车符分隔命令数据 0读新邮件

    1读旧邮件

    2读所有邮件

    3删除邮件 删除邮件时,需提供要删除的邮件编号(在用户登录时已经连同邮件一起发送)

    服务器响应命令:发送邮件数据,字段之间用回车符隔开,在邮件内容中对其进行信息处理——对回车符进行编码,比如用%0代替,而%用%%代替。或者发送删除成功消息,删除失败消息,读取失败消息——这些特殊消息可以在消息前端用一个字符区分数据或消息及消息类型。

    3.4 聊天室

    显然利用上面所述的用户登录机制,我们可以在服务器中建立聊天室,进行实时对话。同样我们可以使用特殊的消息管理方法,进行聊天管理;如下:

    Select Case 命令的第一个字节

    Case "0" '进入会议室

    For i = 1 To cur '通知其他在线用户有用户上线

    If onl(i, 0) = 0 Then Winsock1(i).SendData "0" + get_un(Index) + Chr(13)

    Next

    Case "1" '离开会议室

    For i = 1 To cur '通知其他在线用户有用户离线

    If onl(i, 0) = 0 Then Winsock1(i).SendData "1" + str(onl(Index, 1)) + Chr(13)

    Next

    Case "2" '发言

    If 第二字节 = "0" Then '向所有用户说话

    For i = 1 To cur '把话送往所有用户

    Ҷƪл˵?
  • һƪ用VC++实现不规则窗口
    һƪ怎样手工声明API