
推荐以下三本书:
《Unix网络编程1:套接字联网API》
《图灵程序设计丛书:TCP/IP网络编程》
《windows socket编程》
重点推荐第一本《UNIX网络编程1》,这本书我觉得是必读的经典书籍。
(一) 利用用户定义的消息通信
在Windows程序设计中,应用程序的每一个线程都拥有自己的消息队列,甚至工作线程也不例外,这样一来,就使得线程之间利用消息来传递信息就变的非常简单。首先用户要定义一个用户消息,如下所示:#define WM_USERMSG WMUSER+100;在需要的时候,在一个线程中调用::PostMessage((HWND)param,WM_USERMSG,0,0)或CwinThread::PostThradMessage()来向另外一个线程发送这个消息,上述函数的四个参数分别是消息将要发送到的目的窗口的句柄、要发送的消息标志符、消息的参数WPARAM和LPARAM。
(二)用事件对象实现通信
在线程之间传递信号进行通信比较复杂的方法是使用事件对象,用MFC的Cevent类的对象来表示。事件对象处于两种状态之一:有信号和无信号,线程可以监视处于有信号状态的事件,以便在适当的时候执行对事件的 *** 作。
ping使用的是ICMP协议,而Qt中没有现成的处理ICMP协议的类。所以使用Qt就是用来做界面的,ping的功能是用C来完成的。
给你两个思路:
思路1 使用linux系统命令ping。 你的程序中fork一个新进程,在新进程里面通过system("ping xxxx");的方式来调用系统ping命令,然后把ping命令的输出通过管道输入到你的程序中来。
思路2 从网上找一个c语言写的现成的ping源代码,有很多的。看懂了以后,把ping源代码集成到你的代码中(把ping的main函数改名字,变成你的内部函数),注意输出数据。这样你的程序就有个ping功能。因为Ping会堵塞的,最好不要在画面线程中运行。
; ——此文章摘自《ASP NET网络数据库开发实例精解》定价 ¥ 特价 ¥ 详细>>//track linktech cn/m_id=dangdang&a_id=A &l= &l_type = width= height= border= nosave>
fileSteam Close(); //关闭发送数据的Socket sendsocket Shutdown(SocketShutdown Send); sendsocket Close(); }
单击页面MySocket aspx中的接收数据按钮触发事件ReceiveBtn_Click (object sender System EventArgs e) 该事件调用函数SendReceiveData()接收从函数SocketSend()发送的数据 函数SendReceiveData()首先创建用来接收数据的Socket对象 并设计接收数据的IP地址和端口 最后把接收的数据写入文件并保存 函数SendReceiveData()和事件 ReceiveBtn_Click(object sender System EventArgs e)的程序代码如下 private void ReceiveBtn_Click(object sender System EventArgs e) { //接收数据 SendReceiveData(); } private void SendReceiveData() { //创建接收数据的Socket Socket receiveSocket = new Socket(AddressFamily InterNeork SocketType Stream ProtocolType Tcp); //设置接收数据的地址 IPEndPoint hostPoint = new IPEndPoint(IPAddress Parse( ) ); //设置端口 receiveSocket Bind(hostPoint); //监听 receiveSocket Listen( ); //设置接收数据缓冲区的大小 Byte[] recData = new Byte[ ]; Socket hostSocket = receiveSocket Accept(); //接收数据 hostSocket Receive(recData); if(hostSocket Receive(recData) > ) { //显示接收数据的信息 LabelData Text = 网页在 + DateTime Now ToString() + 接收的数据大小为 + hostSocket Receive(recData) ToString(); } //创建一个新文件保存接收的数据
lishixinzhi/Article/program/net/201311/15234
网络通信已经没问题了,程序的框架基本就出来了。
你现在需要的是设计一种大数算法出来,因为C++简单类型可以保存的最大值是有限制的,2位数的阶乘已经超过了这个最大值,所以无法得出正确的结果。
你具体搜索一下大数阶乘的算法,修改一下你的程序就可以了。
比如我有1后面1000个0再乘以9后面90个9等于多少?基本类型是无法做到的,因为超出了最大值就溢出了,需要你去构造新的数据结构和算法来处理这些基本的四则运算才行的。
具体涉及到链表、数组、字符串,这是一门专门的学问了。
以上就是关于学习 c socket 编程的资料和书籍有哪些推荐全部的内容,包括:学习 c socket 编程的资料和书籍有哪些推荐、C++ socket 线程与界面交互用什么方法比较呢、求QT大神救命啊,在linux系统下的,用Socket设计一个软件,能实现ping功能,要有界面的。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)