请问哪里有tcptrace的源码?能够响应多线程的。 请问哪里有tcptrace的源码?能够响应多线程的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序调试老是接受数据出错,请高手帮看看哪里问题:#include <Winsock2.h>#include <stdio.h>#pragma comment(lib, "ws2_32.lib")#include <windows.h>DWORD WINAPI Fun1Proc( LPVOID lpParameter // thread data );DWORD WINAPI Fun2Proc( LPVOID lpParameter // thread data );SOCKET sockSrv;SOCKET sockConn;SOCKADDR_IN addrSrv;SOCKET sockClient;SOCKADDR_IN addrSrv2;SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);void main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return; } sockSrv = socket(AF_INET, SOCK_STREAM, 0); sockClient = socket(AF_INET, SOCK_STREAM, 0); addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); addrSrv2.sin_addr.S_un.S_addr=inet_addr("202.108.23.82"); //"211.154.205.43" addrSrv2.sin_family=AF_INET; addrSrv2.sin_port=htons(80); if(SOCKET_ERROR == bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR))) { printf("Error bind, Reason: %d!\n", WSAGetLastError()); return; } listen(sockSrv,5); SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len); connect(sockClient,(SOCKADDR*)&addrSrv2,sizeof(SOCKADDR)); HANDLE hThread1; HANDLE hThread2; hThread1=CreateThread(NULL,0,Fun1Proc,(LPVOID)sockConn,0,NULL); hThread2=CreateThread(NULL,0,Fun2Proc,(LPVOID)sockConn,0,NULL); if(getchar()=='Q') { printf("exit the program"); closesocket(sockClient); closesocket(sockConn); CloseHandle(hThread1); CloseHandle(hThread2); WSACleanup( ); return; } printf("444444444444444444444444444");}DWORD WINAPI Fun1Proc( LPVOID lpParameter // thread data ){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 0; } SOCKET conn = (SOCKET)lpParameter;// printf("1111111111111111111111111\n"); // 一旦客户端链接后,立刻与服务器建立链接 // 等待客户端链接 // printf("3333333333333333333333333333333"); char recvBuf[1000]; while(TRUE) { // printf("9999999999999999999"); int recvbytes = recv(conn, recvBuf, sizeof(recvBuf), 0); if(recvbytes == -1) { printf("Recv error, %d\n", WSAGetLastError()); continue; } // recvBuf[recvbytes] = 0; printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); printf("Recv %d bytes\n", recvbytes); printf("%s\n", recvBuf); send(sockClient, recvBuf, recvbytes, 0); } return 0; }DWORD WINAPI Fun2Proc( LPVOID lpParameter // thread data ){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 0; } SOCKET conn = (SOCKET)lpParameter; char CrecvBuf[2000]; while(true) { int recvbytes = recv(sockClient, CrecvBuf, sizeof(CrecvBuf),0);// CrecvBuf[recvbytes] = 0; printf("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); printf("Recved %d bytes from http server\n",recvbytes);//recvBuf); printf("%s",CrecvBuf); send(conn,CrecvBuf, recvbytes,0); } return 0;} WSAGetLastError看看返回什么错误 多了个星,散分吧 招mfc 高手、爱好者加入群:92131924 用过GDI+的进来看看,谢谢! ScrollWindow后会自动发出WM_PAINT消息吗? 感谢tankbattle、krh2001为我解答重定向问题 在对话框中将菜单项ENABLE/DISABLE问题! 请问,在那有win32 api 编程实例教程下载??? 各位,有谁知道SMTP发送附件的命令 如何设定lParam的值 如何在VC中使用用DELPHI编写的DLL,巨多分!(排除动态加载) SOCKET池 求教:在视图指定的位置放入控件
#include <Winsock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#include <windows.h>
DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
);DWORD WINAPI Fun2Proc(
LPVOID lpParameter // thread data
);SOCKET sockSrv;
SOCKET sockConn;
SOCKADDR_IN addrSrv;SOCKET sockClient;SOCKADDR_IN addrSrv2;SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1);
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
} sockSrv = socket(AF_INET, SOCK_STREAM, 0);
sockClient = socket(AF_INET, SOCK_STREAM, 0);
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
addrSrv2.sin_addr.S_un.S_addr=inet_addr("202.108.23.82"); //"211.154.205.43"
addrSrv2.sin_family=AF_INET;
addrSrv2.sin_port=htons(80);
if(SOCKET_ERROR == bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)))
{
printf("Error bind, Reason: %d!\n", WSAGetLastError());
return;
}
listen(sockSrv,5);
SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);
connect(sockClient,(SOCKADDR*)&addrSrv2,sizeof(SOCKADDR)); HANDLE hThread1;
HANDLE hThread2;
hThread1=CreateThread(NULL,0,Fun1Proc,(LPVOID)sockConn,0,NULL);
hThread2=CreateThread(NULL,0,Fun2Proc,(LPVOID)sockConn,0,NULL);
if(getchar()=='Q')
{
printf("exit the program");
closesocket(sockClient);
closesocket(sockConn);
CloseHandle(hThread1);
CloseHandle(hThread2);
WSACleanup( );
return;
}
printf("444444444444444444444444444");
}
DWORD WINAPI Fun1Proc(
LPVOID lpParameter // thread data
)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1);
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}
SOCKET conn = (SOCKET)lpParameter;
// printf("1111111111111111111111111\n");
// 一旦客户端链接后,立刻与服务器建立链接
// 等待客户端链接
// printf("3333333333333333333333333333333"); char recvBuf[1000];
while(TRUE)
{
// printf("9999999999999999999");
int recvbytes = recv(conn, recvBuf, sizeof(recvBuf), 0);
if(recvbytes == -1)
{
printf("Recv error, %d\n", WSAGetLastError());
continue;
}
// recvBuf[recvbytes] = 0;
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
printf("Recv %d bytes\n", recvbytes);
printf("%s\n", recvBuf);
send(sockClient, recvBuf, recvbytes, 0);
}
return 0;
}DWORD WINAPI Fun2Proc(
LPVOID lpParameter // thread data
)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1);
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}
SOCKET conn = (SOCKET)lpParameter;
char CrecvBuf[2000];
while(true)
{
int recvbytes = recv(sockClient, CrecvBuf, sizeof(CrecvBuf),0);
// CrecvBuf[recvbytes] = 0;
printf("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf("Recved %d bytes from http server\n",recvbytes);//recvBuf);
printf("%s",CrecvBuf);
send(conn,CrecvBuf, recvbytes,0);
}
return 0;
}