题目有点长,又一次感受到自己表达能力的欠缺,其实问题大概是这样的:由于工作需要用C# socket(第一次使用)写了一个client连接服务器,发送和接收数据包——当然要求能同时发送和接收数据包,接收到就进行处理。我首先想到了要异步处理,C# socket也提供了异步的相关操作,然后我设置断点(基本上socket操作的每个函数都设置了断点让其进入)单步执行(F10),发现都没有问题可以发送和接收数据,但是直接运行(F5)就是不能成功,后来发现问题的原因是connet操作(调用的BeginConnect)是异步的,就是不会阻塞主程序,这样会导致connect操作没有成功,就何来的后续操作(发送和接收数据包),可以发现设置断点然后按F5始终不会进入连接完毕的操作和发送和接收数据包的操作。所以解决方法就是只要保证socket连接操作顺利完成——直接使用Connect进行连接,或者是我找到的一个解决方法是使用 ManualResetEvent。
就不贴代码了,说的很没有逻辑,我想只有碰到过这样问题的人才能看懂吧,也没有时间倒腾了,如果你有问题可以留言。
这个问题我足足用了一天才解决的,请教了公司的很多同事,都素手无策,然后CSDN上有人说了这个问题但是跟我不太一样,也没有找到解决方法。然后我就一直在找人家贴出来的代码,终于被我发现51CTO(查看猛点)上有人用了ManualResetEvent,就有眼前一亮感觉,就赶紧研读了下,就这样把我的问题解决了。
然后再使用C#进行二进制数据包传输的时候要注意大小端和编码的问题。很可能你使用Java开发的时候是没有问题的,但是改用C# 就有问题了,因为C#是进行小端字节序存储的,而网络流的是用大端字节序进行发送的。还有一个问题是不同语言直接要把编码一致,比如我使用C# 的Unicode编码方式把英文字符串转出byte数组,然后Java在另一端解析字符之间会多出空格,这就是编码方式不一致的问题,C#使用的是UTF16,而Java端使用UTF8,所以会多出空格。
问题是很多的,但是总不会无中生有的,只要认真分析总能找到问题所在和解决方法。
转载请在文首注明出处:http://dsqiu.iteye.com/blog/1882308
相关推荐
在Visual Studio 2005环境下,开发者可以利用IDE提供的调试工具,如断点、单步执行、查看变量值等功能,对Socket通信过程进行详细分析和测试。同时,通过添加适当的异常处理,可以确保程序在遇到网络问题时能够优雅...
在VS2008中,开发者可以创建控制台应用程序项目,添加Socket相关的代码,利用其内置的调试工具进行断点设置、单步执行、查看变量值等调试操作,以理解和优化代码。 6. **文件列表"NetSocket"**: 这个文件名可能是...
9. **调试与测试**:在VS2005中,可以使用内置的调试工具检查代码运行状态,通过断点、单步执行和变量监视等功能找出潜在的错误。 10. **网络通信协议**:理解UDP协议的基本原理,包括其无连接性、不可靠性以及如何...
开发者可以通过IDE中的调试器进行断点设置、单步执行、查看变量值等操作,以便于定位和解决问题。 此外,视频传输可能会涉及到编码和解码技术。通常,视频会被编码成特定格式(如H.264或VP9),以降低带宽需求并...
在Visual Studio中,开发者可以利用断点、单步执行、查看变量值等功能进行调试,确保代码运行正确无误。 总结来说,这个“仿QQ聊天工具源码”项目涵盖了C#语言的核心特性,包括面向对象编程、.NET框架的使用、...
C#中的Socket类提供了发送和接收数据的方法,如`Send()`和`Receive()`,以及连接到服务器的`Connect()`方法。 2. **多线程**:为了同时处理多个连接,通信工具往往使用多线程或多任务处理。C#中的Thread类或Task类...
C#的Visual Studio IDE提供了强大的调试工具,如断点、单步执行、变量查看等,帮助开发者定位和修复问题。 10. **版本控制**:为了团队协作和版本管理,开发者通常会使用Git等版本控制系统。C#与Git的集成使得代码...
1.6.3 单步执行 25 1.6.4 运行到程序的指定位置 25 第2章 QQ企业通 2.1 设计思路 28 2.2 关键技术 28 2.2.1 INI文件的应用 28 2.2.2 线程的应用 30 2.2.3 在Socket中发送大容量的消息 30 2.2.4 将...
6. **网络编程**:通过Socket或WebSocket实现客户端与服务器之间的通信,发送和接收消息,实现即时通讯的核心功能。 7. **序列化与反序列化**:为了在网络中传输对象,开发者需要了解如何将对象转换为字节流(序列...
4. **调试工具**:该工具的核心功能之一是调试,这涉及到断点设置、单步执行、查看变量值、调用堆栈分析等功能。C#的调试通常在Visual Studio IDE中进行,通过集成的调试器进行代码的逐行检查和错误定位。 5. **...
10. **调试技巧**:了解如何使用Visual Studio的调试工具,如断点、单步执行、查看变量值等,对于解决程序中的问题非常有帮助。 通过分析和学习这个“仿QQ聊天程序 c#源码”,初学者不仅可以提升C#编程技能,还能...
11. **调试技巧**:使用Visual Studio的调试工具进行断点设置、单步执行、变量观察等,有助于查找和修复程序中的问题。 12. **性能优化**:对于大规模用户量的即时通讯应用,性能优化是必不可少的,包括内存管理、...
1.6.3 单步执行 1.6.4 运行到程序的指定位置 第2章 QQ企业通 2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用...
我们可以利用Visual Studio自带的调试工具,设置断点,查看变量值,以及单步执行代码,以确保程序按照预期工作。此外,单元测试也是一个好习惯,它能帮助我们隔离和验证代码的各个部分。 总的来说,开发一个.NET...
18.3 什么是单步执行 391 18.4 如何运行到指定位置 391 18.5 本章小结 391 第19章 Windows应用程序打包与安装 392 19.1 Windows Installer简介 393 19.2 Windows应用程序部署 393 19.2.1 创建部署项目...