Tag: winsock

C – 对WSAStartup @ 8’的未定义引用

我正在使用Code :: Blocks,MinGW和Windows。 我试图初始化winsock,以便我可以在项目上工作。 我一直收到错误Undefined Reference to WSAStartup@8任何人都知道如何解决此问题? #include #include #include #pragma comment(lib,”ws2_32.lib”) int main(int argc , char *argv[]){ WSADATA wsa; int output; output=WSAStartup(MAKEWORD(2,2),&wsa); if(output != 0) { printf(“Startup failed %d\n”, output); return 1; } else { printf(“Initialized”); return 0; } }

winsock不支持读/写

使用一个小的测试程序(在Linux上使用mingw编译),我注意到不能使用Winsock2的socket调用实现获得的socket fd上的write调用。 写调用返回<0并设置errno = EBADF。 想想从xinetd运行的程序,减去他们的stdin / stdout始终是套接字的假设。 (例如,某些程序会调用getpeername,如果它不是套接字,则会失败,随后它们可能会过早退出。) 那么,除了对fd进行假设之外,如何在/ windin / stdout中读取/写入的{文件描述符类型} – 不可知程序应该合理地在win32环境中工作? 或者更简单地说,是否有一些魔术函数调用要用win32(well,mingw) write实现来连接Winsock2套接字fds?

Winsock UDP数据包被丢弃了吗?

我们在Windows中通过UDP设置建立了客户端/服务器通信系统。 我们面临的问题是,当吞吐量增长时,数据包将被丢弃。 我们怀疑这是由于UDP接收缓冲区不断被轮询导致缓冲区被阻塞并丢弃任何传入的数据包。 是否有可能读取此缓冲区将导致传入的数据包被丢弃? 如果是这样,有什么选择来纠正这个? 该系统是用C语言编写的。请告诉我这是否过于模糊,我可以尝试提供更多信息。 谢谢!

使用Winsock将客户端TCP套接字绑定到特定本地端口时,SO_REUSEADDR没有任何影响

我将客户端 TCP套接字绑定到特定的本地端口。 为了处理套接字保持TIME_WAIT状态一段时间的情况,我在套接字上使用带有SO_REUSEADDR setsockopt() 。 它适用于Linux,但不适用于Windows,当前一个连接仍在TIME_WAIT时,我在connect()调用时得到WSAEADDRINUSE 。 MSDN并不完全清楚客户端套接字会发生什么: […]对于需要将多个套接字绑定到同一端口号的服务器应用程序,请考虑使用setsockopt ( SO_REUSEADDR )。 客户端应用程序通常不需要在所有连接上调用bind-connect自动选择未使用的端口。 […] 我该如何避免这种情况?

未定义的getaddrinfo参考

我已经有很长一段时间没有得到这个错误了,谷歌也没有多少帮助。 我是Winsock编程的新手,并试图从在线资源中学习。 我正在尝试使用MSDN网站上的详细信息构建一个简单的服务器。 每当我编译代码(MinGW)时,我都会收到标题中提到的错误( Undefined reference to getaddrinfo )。 以下是代码: #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #define WINVER WindowsXP #include #include #include #include #include int main() { WSADATA wsaData; int iResult; iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != 0) { printf(“WSAStartup failed: %d\n”, iResult); return 1; } #define DEFAULT_PORT “27015” struct addrinfo *result = NULL, *ptr […]

通过TCP / IP连接发送二进制文件

我将在这里重述整个问题,以便它是可以回答的。 我能够在不使用套接字的同一台机器上完美地复制二进制文件,只是制作一个简单的复制function。 尝试实现此代码以复制到TCP / IP连接但无法使其工作。 FILE *filehandle = fopen(“imagefile.jpg”, “rb”); FILE *dest =fopen(“imagecopy.jpg”, “wb”); // copied image file fseek(filehandle, 0, SEEK_END); unsigned long filesize = ftell(filehandle); char *buffer = (char*)malloc(sizeof(char)*filesize); rewind(filehandle); int bytesread = fread(buffer, sizeof(char), filesize, filehandle); for( int i=0; i<filesize; i++ ) { fputc(buffer[i], filehandle); // copies all the contents to dest } […]