Sender.Send(newClassSerializers().SerializeBinary(msg).ToArray()); //接收信息
Sender.Receive(bytes); msg =
(ClassMessage)newClassSerializers().DeSerializeBinary(newMemoryStream(bytes)); return msg; }
catch (Exception ex) {
MessageBox.Show(ex.Message); returnnull; } }
publicvoid SendMsg(ClassMessage msg) { try { //发送信息
Sender.Send(newClassSerializers().SerializeBinary(msg).ToArray()); }
catch (Exception ex) {
MessageBox.Show(ex.Message); } }
publicClassMessage ReceiveMsg() { try { //接收信息
Sender.Receive(bytes); ClassMessage msg =
(ClassMessage)newClassSerializers().DeSerializeBinary(newMemoryStream(bytes)); return msg; }
catch (Exception ex) {
MessageBox.Show(ex.Message); returnnull; } }
publicvoid ShutSocket() {
if (Sender.Connected == false)
33
return; //释放相关资源
Sender.Shutdown(SocketShutdown.Both); Sender.Close(); }
(3)数据库 //Sign和Sex的约束
AltertableUserInfoAddconstraintck_Sign check(Sign=0 orSign=1 orSign=2) AltertableUserInfoAddconstraintck_Sex check(Sex='男'orSex='女')
//定义Friend表外检键
AltertableFriendsaddconstraintfk_userid foreignkey (UserId)referencesUserInfo(UserId) AltertableFriendsaddconstraintfk_friendid foreignkey (FriendId)referencesUserInfo(UserId)
//插入用户信息(用户ID自动生成)存储过程
CreateprocedureAutoUserId (@namevarchar(20), @passwordvarchar(20), @sexvarchar(2), @ageint) as begin
declare@iint set@i=1
while(@i<999999999) begin
ifexists(selectconvert(int,UserId)fromUserInfowhereconvert(int,UserId)=@i) begin set@i=@i+1 continue end else begin
insertUserInfovalues(right('000000000'+convert(varchar(9),@i),9),@name,@password,NULL,@sex,@age,0,NULL) break end end end
34
5 简要的使用说明
1.首先运行服务器程序,点击启动按钮,开启工作状态
2.运行客户端程序,首先进入登录界面
35
3.先注册用户蔓蔓青青,再登陆用户,注册成功之后,点击确定跳转到登陆界面。
4.用刚刚注册的用户蔓蔓青青进行登录,点击确定跳转到主界面。主界面显示我的好友列表。
36
5.好友列表由于刚刚注册,还没有添加好友,所以显示的是空。此时搜索并添加好友,添加成功之后若是不再添加好友,关闭好友搜索对话即可回到主页面,此时显示刚刚添加的好友
37