写了个局域网通信工程,调试过不了,自已都晕了,请大家帮忙一下,谢谢...

HNLGDXYJS 2009-05-29 03:28:49
我是按C#项目开发全程实录那本书写的,自已重新组织代码,弄到现在一团混乱...
如果有哪位大侠有这方面的经验,并有时间帮我看一下,我将感激万分..谢谢..

有兴趣的可以发短信息给我,或直接留下邮箱,或发邮件给我(40 # 248 # 4974@qq.com)谢谢...

温馨提示:代码风格本身比较好,但本人出于学习目的,把某些注释写成了英文,并且写的有那么一点别扭,请大侠做好心理准备..
呵呵...其实我也很无奈..

如果大家都没空,也麻烦顶一下...就当散分了吧,呵呵...
...全文
189 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
HNLGDXYJS 2009-05-30
  • 打赏
  • 举报
回复
是这样的,我每次调试时都要调用register窗体,可是程序不是这样的,是注册一次就行的,是不是因为调试的原因.好像也不是,我在代码中放了一些测试信息,确实没执行那里...
按理说,注册的时候信息是要写入C:\windows\server.ini文件的,可是下面这段代码并没有执行:(代码在F_SerSetup.cs中)


[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
private void DataArrival(byte[] Data, System.Net.IPAddress Ip, int Port) //handle process when there has data arrival
{
try
{
ClassMsg msg = new ClassSerializers().DeSerializeBinary((new System.IO.MemoryStream(Data))) as ClassMsg;
switch (msg.msgCommand)
{
case MsgCommand.Registered://register succeed
DialogResult = DialogResult.OK;
MessageBox.Show("does it come here?");
WritePrivateProfileString("yhzl", "ID", serID, PubClass.Get_Windows() + "\\Server.ini");
WritePrivateProfileString("yhzl", "Port", text_IP.Text.Trim(), PubClass.Get_Windows() + "\\Server.ini");
WritePrivateProfileString("yhzl", "Name", text_Name.Text.Trim(), PubClass.Get_Windows() + "\\Server.ini");
break;
}
} catch { }
}


这也可能是导致F_Login_Load(object sender, EventArgs e)中的 GetPrivateProfileString("yhzl", "ID", "Server address read error.", temp, 255, System.Environment.CurrentDirectory + "\\Server.ini");
等事件读不到所需的IPAddress的port...这是什么原因呢?
代码在F_Login.cs中

private void F_Login_Load(object sender, EventArgs e)
{

//if there has not server.ini file while starting program
if (System.IO.File.Exists(PubClass.Get_Windows() + "\\Server.ini") == false)
{
F_SerSetup FrmSerSetup = new F_SerSetup(); //create and refer the register form
FrmSerSetup.Text = "User Register"; //set the name of the register form
if (FrmSerSetup.ShowDialog(this) == DialogResult.OK) //cruuent register form return OK..
{
FrmSerSetup.Dispose(); //delete all of the resource of current form
}
else
{
FrmSerSetup.Dispose();
DialogResult = DialogResult.Cancel;
}
}
//if there has server.ini file in windows directory


if (System.IO.File.Exists(PubClass.Get_Windows() + "\\Server.ini") == true)
{
Publec_Class.ServerIP = "";
Publec_Class.ServerPort = "";

//read server.ini file
StringBuilder temp = new StringBuilder(255);
//read server's ip address
GetPrivateProfileString("yhzl", "ID", "Server address read error.", temp, 255, System.Environment.CurrentDirectory + "\\Server.ini");
Publec_Class.ServerIP = temp.ToString();
//read port number
GetPrivateProfileString("yhzl", "Port", "Server address read error.", temp, 255, System.Environment.CurrentDirectory + "\\Server.ini");
Publec_Class.ServerPort = temp.ToString();
//read user name
GetPrivateProfileString("yhzl", "Name", "Server address read error.", temp, 255, System.Environment.CurrentDirectory + "\\Server.ini");
Publec_Class.ClientName = temp.ToString();
}
else
{
DialogResult = DialogResult.Cancel;
}
udpSocket1.Active = true; //start the custom udpsocket control...
}


HNLGDXYJS 2009-05-29
  • 打赏
  • 举报
回复
如果feiyun0112 大哥有空的话,可不可以跟我说一下那个DataArrival 什么时候执行,我怎么觉得他没有执行...谢谢

不知问题是不是就出现在这里...可能是没有调用到这个函数还是怎样..

//代码在F_SerSetup.cs中
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

private void DataArrival(byte[] Data, System.Net.IPAddress Ip, int Port) //handle process when there has data arrival
{
try
{
ClassMsg msg = new ClassSerializers().DeSerializeBinary((new System.IO.MemoryStream(Data))) as ClassMsg;
switch (msg.msgCommand)
{
case MsgCommand.Registered://register succeed
DialogResult = DialogResult.OK;
WritePrivateProfileString("MyQQ", "ID", serID, PubClass.Get_Windows() + "\\Server.ini");
WritePrivateProfileString("MyQQ", "Port", text_IP.Text.Trim(), PubClass.Get_Windows() + "\\Server.ini");
WritePrivateProfileString("MyQQ", "Name", text_Name.Text.Trim(), PubClass.Get_Windows() + "\\Server.ini");
MessageBox.Show("?");
break;
}
} catch { }
}
HNLGDXYJS 2009-05-29
  • 打赏
  • 举报
回复
F_Login的Load事件 绑定 F_Logon_Load ,我已经改过来了,还是不行...

我重新发个程序给你,服务端弄好了,麻烦你帮我看一下从register-->login-->F_client这些...看一下能不能正确运行,谢谢了...
feiyun0112 2009-05-29
  • 打赏
  • 举报
回复
F_Login的Load事件 绑定 F_Logon_Load
yagebu1983 2009-05-29
  • 打赏
  • 举报
回复
关注。。。
HNLGDXYJS 2009-05-29
  • 打赏
  • 举报
回复
我晕了,服务端那个界面给我弄丢了...我发过去的工程过能是错误的,因为调试,修改,建了N个同名工程在不同位置,弄来弄去都弄混了...不好意思啊...
HNLGDXYJS 2009-05-29
  • 打赏
  • 举报
回复
程序是这样的,运行首先是F_Client,但在显示F_Client之前时,先调用了F_Login...但就进不了F_client,所以就不知怎么办了,注册是成功的...
HNLGDXYJS 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feiyun0112 的回复:]
(1):从注册到进入F_Client那个界面的主线是什么,不然我调试老是不行,谢谢了...
应该先打开F_Login,本来应该有Load事件,你怎么改掉了F_Logon_Load

(2):注册时到端口号有什么特别要求吗?可不可以随便设一个端口号.
没有,只要没占用

(3):调试时也一定要先运行服务器吗?

[/Quote]

谢谢大侠先,可不可以帮我修改一下,把修改那部分代码给我看一下啊....谢谢了...我现在也去试试先..
feiyun0112 2009-05-29
  • 打赏
  • 举报
回复
(1):从注册到进入F_Client那个界面的主线是什么,不然我调试老是不行,谢谢了...
应该先打开F_Login,本来应该有Load事件,你怎么改掉了F_Logon_Load

(2):注册时到端口号有什么特别要求吗?可不可以随便设一个端口号.
没有,只要没占用

(3):调试时也一定要先运行服务器吗?
xupeihuagudulei 2009-05-29
  • 打赏
  • 举报
回复
不是大侠,来接个分。
热学沸腾56 2009-05-29
  • 打赏
  • 举报
回复
呵呵 爱莫能助~~
帮顶!
Qim 2009-05-29
  • 打赏
  • 举报
回复
学习,UP。

我的邮箱在blog上
feiyun0112 2009-05-29
  • 打赏
  • 举报
回复


我的邮箱在blog上

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://feiyun0112.cnblogs.com/

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧