⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_40823.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:40823 发表者:xiongli 发表日期:2003-05-21 20:32:05
<br>主题:WSAStartup要调用几次?
<br>内容:我在main里面启动20个线程并发用tcp访问一个服务器<BR>我的WSAStartup在main里面调用了一次<BR>然后只有第一个访问正常<BR>其他的都出错,错误是WSAStartup没有调用<BR>我每个线程调用一次WSAStartup就完全正常<BR>但是<BR>The Windows Sockets WSAStartup function initiates use of Ws2_32.dll by a process<BR>一个进程只要调用一次就可以了阿<BR>我的主线程用waitformutilpleobject等待<BR>同时使用了正确的crt
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-05-21 20:46:34
<br>内容:初始化的代码 ?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-05-21 20:46:51
<br>内容:应该一次就可以
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-05-21 21:09:59
<br>内容:if (WSAStartup(MAKEWORD(2,2), &amp;wsd) != 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Failed to load Winsock library!\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-05-21 21:10:27
<br>内容:不管是debug/release<BR>f5/ctrl+f5都试过了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-05-21 21:16:36
<br>内容:非常奇怪的是有时候实在socket的时候失败<BR>有的时候是在connect的时候失败
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-05-21 21:20:21
<br>内容:iobegin<BR>iobegin<BR>iobegin<BR>iobegin<BR>iobegin<BR>iobegin<BR>iobegin<BR>iobegin<BR>iobegin<BR>iobegin<BR>iobegin<BR>fist send ok!<BR><BR>connect() failed: 10093<BR>connect() failed: 10093<BR>connect() failed: 10093<BR>connect() failed: 10093<BR>connect() failed: 10093<BR>connect() failed: 10093<BR>connect() failed: 10093<BR>connect() failed: 10093<BR>connect() failed: 10093<BR>connect() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>iobegin<BR>socket() failed: 10093<BR>Press any key to continue
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-05-21 21:20:55
<br>内容:精简一下,打包,我调。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-05-21 21:35:59
<br>内容:<BR>//&nbsp;&nbsp;<BR>#include &lt;winsock2.h&gt;<BR>#include &lt;stdio.h&gt;<BR>#include &lt;stdlib.h&gt;<BR>#include &lt;process.h&gt;<BR>#define DEFAULT_COUNT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20<BR>#define DEFAULT_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5150<BR>#define DEFAULT_BUFFER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2048<BR>#define DEFAULT_MESSAGE&nbsp;&nbsp;&nbsp;&nbsp; "This is a test of the emergency \<BR>broadcasting system "<BR><BR>char&nbsp;&nbsp;szServer[128],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Server to connect to<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;szMessage[1024];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Message to send to sever<BR>int&nbsp;&nbsp; iPort&nbsp;&nbsp;&nbsp;&nbsp; = DEFAULT_PORT;&nbsp;&nbsp;// Port on server to connect to<BR>DWORD dwCount&nbsp;&nbsp; = DEFAULT_COUNT; // Number of times to send message<BR>BOOL&nbsp;&nbsp;bSendOnly = FALSE;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Send data only; don't receive<BR><BR>//<BR>unsigned int WINAPI io(LPVOID lpParameter)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wsd;<BR><BR>/*&nbsp;&nbsp;&nbsp;&nbsp; if (WSAStartup(MAKEWORD(2,2), &amp;wsd) != 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Failed to load Winsock library!\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("iobegin\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sClient;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;szBuffer[DEFAULT_BUFFER];<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i,j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned long ul = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct sockaddr_in server;<BR>&nbsp;&nbsp;&nbsp;&nbsp;struct hostent&nbsp;&nbsp;&nbsp;&nbsp;*host = NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Parse the command line and load Winsock<BR>&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp; // ValidateArgs(argc, argv);<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(szMessage, DEFAULT_MESSAGE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;// Create the socket, and attempt to connect to the server<BR>&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (sClient == INVALID_SOCKET)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("socket() failed: %d\n", WSAGetLastError());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(szServer,"localhost");<BR>&nbsp;&nbsp;&nbsp;&nbsp;server.sin_family = AF_INET;<BR>&nbsp;&nbsp;&nbsp;&nbsp;server.sin_port = htons(iPort);<BR>&nbsp;&nbsp;&nbsp;&nbsp;server.sin_addr.s_addr = inet_addr(szServer);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;// If the supplied server address wasn't in the form<BR>&nbsp;&nbsp;&nbsp;&nbsp;// "aaa.bbb.ccc.ddd" it's a hostname, so try to resolve it<BR>&nbsp;&nbsp;&nbsp;&nbsp;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (server.sin_addr.s_addr == INADDR_NONE)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host = gethostbyname(szServer);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (host == NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Unable to resolve server: %s\n", szServer);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CopyMemory(&amp;server.sin_addr, host-&gt;h_addr_list[0],<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host-&gt;h_length);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>//&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(0,"client connect begin",0,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (connect(sClient, (struct sockaddr *)&amp;server, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sizeof(server)) == SOCKET_ERROR)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("connect() failed: %d\n", WSAGetLastError());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret = send(sClient, szMessage, 1, 0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;if(ret!=-1)printf("fist send ok!\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret = send(sClient, szMessage, 6, 0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;if(ret!=-1)printf("fist send ok!\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret = send(sClient, szMessage, 60, 0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;if(ret!=-1)printf("fist send ok!\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char recvbuf[1000];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret=recv(sClient,recvbuf,1000,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;if(ret!=-1)printf("fist send ok!\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recvbuf[ret]='\0';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(recvbuf);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;printf("%d",GetLastError());<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;closesocket(sClient);<BR>&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup();<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}<BR><BR>int main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nmax=20;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wsd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE harray[21];<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (WSAStartup(MAKEWORD(2,2), &amp;wsd) != 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Failed to load Winsock library!\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;=nmax;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;harray[i]=(void*)_beginthreadex/*CreateThread*/(NULL, 0, io, NULL, 0, 0);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp; WaitForMultipleObjects(nmax+1,harray,1,INFINITE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-05-21 21:37:09
<br>内容:server
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-05-21 21:37:44
<br>内容:server,here
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:dr0 回复日期:2003-05-21 21:47:44
<br>内容:WSACleanup() ? !
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-05-21 21:50:22
<br>内容:你在每个线程的结尾清除了winsock
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-05-21 21:50:39
<br>内容:nnd<BR>下次再也不直接把例子上的函数改个名字就开始用了<BR>io本来是他的main<BR>我改个名字自己写了一个main就开始用<BR>hoho
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-05-21 21:57:33
<br>内容:要改也要仔细点
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Justin Le 回复日期:2003-05-21 22:08:12
<br>内容:在线程中这样能使用吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-05-21 22:11:41
<br>内容:在线程中这样能使用吗? <BR>// 何意 ?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Justin Le 回复日期:2003-05-21 22:16:22
<br>内容:dr0: 我用他的example,去除了 线程中 WSACleanup();<BR>然后在main中加WSACleanup();是不是就应该正确?<BR>但是还是报错啊
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:FirstHoward 回复日期:2003-05-27 21:24:34
<br>内容:你开辟多个线程,每个线程都打开同一个iPort,所以你只能一次成功的机会。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:飞浪 回复日期:2003-06-01 16:04:53
<br>内容:可能是你在主函数里WSAStartup()在mian()函数的结尾没有调用相应的WSACleanup(),
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -