导航:首页 > 编程语言 > vc网络编程多线程

vc网络编程多线程

发布时间:2022-08-04 14:37:12

‘壹’ VC 网络编程新手 求助关于客户端自动连接

首先,楼主要知道,如果服务器端没有开启,即服务器没有调用listen&accept,对connect的调用会导致这个函数一直不会返回(当然最终会返回,默认时间很长),但楼主是在OnTimer中调用connect的,WM_TIMER设为1秒是不合理的。

可以这样做对话框初始化设置SetTimer;
到时后,调用OnTimer,在OnTimer中先杀死Timer,然后再创建新的线程进行socket的处理,最后如果connect返回失败,可以在线程返回前再次SetTimer,这样做比较好。

另外,考虑到在新线程中的connect时,可能会关闭对话框,因此应该在OnClose中进行一些处理,如closesocket,这样可以强迫connect返回。这样可以使窗口被关闭后进程得体的被终止。

最后还要返回到新线程中对connect进行一些处理,必须让connect知道调用失败是因为连接超时还是因为SOCKET被强行关闭。因为如果是连接超时,那就可以再次SetTimer以便在下一秒再试着连接。如果是SOCKET被关闭了,connect不应该再次SetTimer,因为进程要退出了。代码如下:
ThreadProc() {
...
if (SOCKET_ERROR == connect(...)) {
if (WSAEINTR == WSAGetLastError()) {
//SOCKET被强行关闭导致错误代码为WSAEINTR
...
} else {
SetTimer(hwnd, 1, 1000, NULL);
}
}
...
}

注意,窗口被关闭时不能使用WSACleanup,因为connect后要使用WSAGetLastError,WSACleanup的调用要慎重,如在CWinApp::ExitInstance中。还有楼主在connect时第一个参数s是什么东西?是不是应该改为m_socket? 在OnTimer中调用不会返回的connect会使窗口界面出现“假死”.永远不要让窗口处理函数长时间的不能返回。如果要进行长时间的处理,应该另外开线程进行单独处理。

‘贰’ C语言基础网络编程求助 如何实现多线程

#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>

void*thread(void*);
int client[5],i;

main()
{
int serverSocket= socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in server_addr;
struct sockaddr_in clientAddr;
int addr_len = sizeof(clientAddr);
//线程
pthread_t id;
pthread_attr_t attr;
pthread_attr_init(&attr);////////////////////////////////////////////////
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
//创建地址
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family =AF_INET;
server_addr.sin_port = htons(5555);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
//绑定
bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr));
listen(serverSocket,5);
for(i=0;i<5;i++)
{
client[i] = accept(serverSocket,(struct sockaddr *)&clientAddr,(socklen_t*)&addr_len);
pthread_create(&id,&attr,thread,(void *)&client[i]);/////////////////////////////////
pthread_join(id,NULL);
}
close(serverSocket);/////////////////////////
return 0;
}
void* thread(void* argv)
{
char buffer[200];
int a=i;
int s_c = *((int*)argv);///////////////////
while(1)
{
int n = recv(s_c,buffer,sizeof(buffer),0);
if(n > 0)
printf("客户端发过来的 : %s\n",buffer);
else
return;
}
close(s_c);
}

‘叁’ VC多线程网络编程 高手请进

不要在工作线程里更新界面,可以通过发送消息到UI来进行更新就是这句:pdlg->m_edit.SetWindowText(s);

‘肆’ 推荐一本讲C#多线程编程的好书,或者一部好的视频地址

先从最简明扼要的入手,以下就是:

《孙鑫VC++ 20集全》[RMVB]

CD15:多线程程序的编写,多线程应用中容易出现的问题。互斥对象的讲解,如何采用互斥对象来实现多线程的同步。如何利用命名互斥对象保证应用程序只有一个实例运行。应用多线程编写网络聊天室程序。

CD16:事件内核对象、关键代码段(临界区)的讲解,以及在多线程同步中的应用。在Windows下编写基于消息的网络应用程序,掌握阻塞与非阻塞网络程序的编写,理解在Windows平台下,采用异步选择机制可以提高网络应用程序的性能。

‘伍’ 有关C++的一些特性,比如网络编程,多线程编程

类的封装性、 继承性等有关对象的特性,使程序代码只需一次编译,然后 通过C#目前主要是应用在网络编程上,其他领域比如数据库、窗体编程,都逐渐在增大

‘陆’ 想接触C++多线程编程,需要从哪方面入手,有没有

多线程编程的难点不在于锁,正常人看一下操作系统再写几个线程demo就可以基本理解了。对于C++而言,甚至连编写线程安全的类也不是难事。只需要用同步原语来保持对共享资源的访问即可。
我个人觉得最需要的就是实战,写Demo谁都会写。同步原语就那么几个,信号量,互斥量,条件变量等。但是怎么用呢?当你从点击星际争霸到和玩家匹配进行游戏,这当中程序是怎么运行的?
事件驱动是怎么驱动的?
就目前来说,我遇到的困难不是线程的死锁,而是对并发模型的理解。Actor,Reactor模式等。这些东西不实战,个人空想理解起来会吃力。
推荐《Linux多线程服务端编程》,这本书给我的观点是实战性很强,而且涉及面也比较广。后几章提到了分布式系统和作者对C++的思考以及STL algotrithm的运用。如作者所说:“对于面向对象,封装式必须的;但继承和多态耦合性太强,很不划算”我就很赞同

同时展示了一个用C++开发的网络库,不过虽然看了这本书,我还是没找到为什么要用C++的理由。我认为C的确可以很好地解决问题。C++的话就RAII算是真的有益处。
但读之前你需要有一定的C++和操作系统基础。当时买这本书的时候还觉得有点心疼,现在看看物超所值。(我那本CSAPP就翻了一章=-=)
总结:看现代操作系统第二章,同时结合C++11的thread库写经典Demo(生产者消费者问题等)
花两周左右。剩下的就是实战。如果不实战,你还是不知道这些东西在生产环境中是怎么使用的。
可以结合muo skynet等开源网络框架学习并发模型。

‘柒’ C++多线程编程问题

多线程工作可以提高解决问题的速度

你举得例子可以多线程实现,但是更多的人称之为分布式计算
多线程主要是创建多个线程,每个线程负责自己的事情,每个线程只对主线程负责
至于解决问题的速度应该可以达到提高一半,但是你要注意资源的互斥,互斥处理不好估计会事倍功半

‘捌’ 学习C++多线程和C++网络编程需要看哪些书

C专家编程
作者:PETER VAN DER LINDEN
出版:人民邮电 出版日期:2010年05月
《C专家编程》展示了最优秀的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值。本书可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,本书可以帮助他们站在C的高度了解和学习C++。

Visual C++黑客编程揭秘与防范
作者:梁洋洋 编着
出版:人民邮电出版社 出版日期:2009年07月
本书全面介绍了在VisualC++环境中,使用WindowsSocket及API 开发各类防范黑客软件及安全防护工具的编程实现方法,深入剖析了目前热门的黑客编程技术。本书通过基础篇、提高篇、综合篇和拓展篇这种循序渐进地方式,向读者介绍了防范黑客攻击程序、安全防护工具、远程控制软件和网络安全管理软件的原理及具体编程实现方法。 本书内容丰富,实用性和实战性强,不仅包括读者必备的防范黑客的编程知识,更深入阐述了网络编程方面的高级技术。不仅适用于黑客程序开发,在读者掌握了本书介绍的各种编程技术后,还

C#网络编程技术教程
作者:金华,华进 编着
出版:人民邮电 出版日期:2009年01月
本书是一本系统介绍C# 网络编程技术的教材,全书共11章,由两部分组成。第1部分(第1~5章)为基础知识,内容包括VisualC#.NET集成开发环境、C#语言的基础知识、面向对象的程序设计、C#的Windows编程方法、C#的常用数据类、网络编程的基本概念、网络套接字编程以及多线程编程的方法概述等。第2部分 (第6~11章)介绍网络编程的几个常用领域,内容包括TCP/UDP编程、FTP 编程、电子邮件协议编程、HTTP编程、WebService编程以及密码术网络编程等。

从新华书店文轩网上搜索的,供参考

‘玖’ TCP MFC对话框C++网络编程多线程编程怎么实现呢

你在阻塞的代码处使用_beginthread创建一个线程来执行相关代码不就可以了。

阅读全文

与vc网络编程多线程相关的资料

热点内容
农行app怎么开网银 浏览:649
java迭代器遍历 浏览:301
闽政通无法请求服务器是什么 浏览:48
怎么做积木解压神器 浏览:203
王者荣耀解压玩具抽奖 浏览:49
12位是由啥加密的 浏览:868
程序员编迷你世界代码 浏览:895
php取现在时间 浏览:246
单片机高吸收 浏览:427
怎么区分五代头是不是加密喷头 浏览:244
hunt测试服务器是什么意思 浏览:510
2013程序员考试 浏览:641
毕业论文是pdf 浏览:736
服务器跑网心云划算吗 浏览:471
单片机定时器计数初值的计算公式 浏览:801
win7控制台命令 浏览:567
猫咪成年app怎么升级 浏览:692
360有没有加密软件 浏览:315
清除cisco交换机配置命令 浏览:751
华为删除交换机配置命令 浏览:473