你们为winsock的资源推荐什么?
我有一项任务,我们只需要几天时间就可以使用UDP发送一个简单的数据包(并接收相同类型的数据包).
我对C#套接字非常熟悉,但对C++没有任何帮助.
任何提示或资源?
我发现只有这个字符串
find_library(WSOCK32_LIBRARY wsock32)
find_library(WS2_32_LIBRARY ws2_32)
Run Code Online (Sandbox Code Playgroud)
(我是cmake的初学者)如何在cmake中链接winsock2(winsock?)?
我们在Windows中通过UDP设置建立了客户端/服务器通信系统.我们面临的问题是,当吞吐量增长时,数据包会被丢弃.我们怀疑这是由于UDP接收缓冲区不断被轮询导致缓冲区被阻塞并丢弃任何传入的数据包.是否有可能读取此缓冲区将导致传入的数据包被丢弃?如果是这样,有什么选择来纠正这个?该系统是用C语言编写的.请告诉我这是否过于模糊,我可以尝试提供更多信息.谢谢!
有没有人在使用Winsock的C++中有任何良好的点对点(p2p)网络示例?对于特别需要使用这种技术的客户来说,这是一个要求(天知道为什么).我需要确定这是否可行.
任何帮助将不胜感激.
我想避免使用库,这样我就可以理解底层的源代码并进一步了解我的知识.
我正在编写一个简单的HTTP服务器并学习TIME_WAIT.在处理请求后,如果没有所有套接字卡在TIME_WAIT中,那么繁重环境中的真实Web服务器如何处理来自数千个用户的请求?(不询问保持活着 - 这对单个客户有用,但对于成千上万的不同客户来说却没有帮助).
我已经读过你尝试让客户端先关闭,这样所有的TIME_WAIT都会在所有客户端之间传播,而不是集中在服务器上.
这是怎么做到的?在某些时候,服务器必须调用close/closesocket.
在Win32中,有没有办法测试套接字是否是非阻塞的?
在POSIX系统下,我会做类似以下的事情:
int is_non_blocking(int sock_fd) {
flags = fcntl(sock_fd, F_GETFL, 0);
return flags & O_NONBLOCK;
}
Run Code Online (Sandbox Code Playgroud)
但是,Windows套接字不支持fcntl().使用ioctl和FIONBIO 设置非阻塞模式,但似乎没有办法使用ioctl 获得当前的非阻塞模式.
在Windows上是否有其他一些调用我可以用来确定套接字当前是否处于非阻塞模式?
我在Windows(Win7)上有一个非常大的C++服务器应用程序.它编译得很好并且运行得很好,但有时IP连接失败.
我怀疑是对Winsock API的一些调用得到了错误的参数,并没有正确检查所有结果代码.
有没有办法跟踪所有对Winsock API的调用,包括参数,所以我可以检查它们是否有失败的连接?Linux上的类似于strace的东西可能吗?
我刚刚开始学习socket编程并了解了winsock并取得了一些进展.我的问题基本上是:我想发送电子邮件,我该怎么办?
要点:
这是我到目前为止阅读的页面的链接:
基本winsock指南:http://msdn.microsoft.com/en-us/library/windows/desktop/ms737629( v = vs.85).aspx
我已经阅读了beej guide的前14页(无法发布链接,新用户最多只能发布两个超链接)
我已经了解了类型(WSADATA,addrinfo structure,sockaddr,SOCKET)和功能(WSAStartup(),WSACleanup(),getaddrinfo(),Shutdown(),WSAGetLastError(),socket(),...)
我刚刚开始阅读这篇关于http://www.faqs.org/rfcs/rfc821.html的文章SMTP
这是我到现在所写的:
#include <stdio.h>
#include <WinSock2.h>
#include <WS2tcpip.h>
#pragma comment(lib, "Ws2_32.lib") // Applications that use Winsock must be linked with the Ws2_32.lib library file.
#define HTTP_PORT "80"
#define SMTP_PORT "25"
#define HOSTNAME_PORT "101"
/*
All ports and web …Run Code Online (Sandbox Code Playgroud) 我正在编译Visual C++ 2010中的项目,但是我遇到了一些Winsock重定义的问题.
首先我得到:
syntax error : identifier 'SOCKADDR_STORAGE'
Run Code Online (Sandbox Code Playgroud)
但是,如果我包含winsock或winsock2或ws2tcpip,我会收到许多错误:
error C2011: 'sockaddr' : 'struct' type redefinition
error C2011: 'WSAData' : 'struct' type redefinition
error C2011: 'linger' : 'struct' type redefinition
Run Code Online (Sandbox Code Playgroud) 为了尝试绕着udp套接字缠绕我,我试图将这个教程页面http://www.linuxhowtos.org/C_C++/socket.htm中的代码移植到winsock(如果重要的话,在win 8上运行).[以下直接链接]
代码当前编译并运行但我从未收到过数据包,两个程序只是等待并阻塞recvfrom().我一直有同样的问题(例如,这个代码的修改版本/sf/answers/47567061/包含一个recvfrom()调用.并且这个代码C++问题与数据报(UDP)winsocket到sendto和recvfrom在同一个套接字上通过环回适配器进行建议的更改).我想我正在犯一些简单而根本的错误; 但是我无法独立找到它.希望有更多经验的人可以为我解决这个问题.谢谢.
附加说明:
我正在运行服务器exe,然后在同一台计算机上运行客户端exe.它连接到互联网.我也尝试过使用解析为我的IP地址的域名.我也试过禁用防火墙,虽然我已经允许两个程序完全访问.
直接链接到原始客户端和服务器代码:
http://www.linuxhowtos.org/data/6/client_udp.c
http://www.linuxhowtos.org/data/6/server_udp.c
我目前的尝试:
都链接到libws2_32.a
客户代码:
#include <stdio.h>
#include <winsock2.h>
#include <string.h>
void error(const char *);
int main()
{
WSAData data;
WSAStartup( MAKEWORD( 2, 2 ), &data );
int sock, n;
int length;
struct sockaddr_in server, from;
struct hostent *hp;
char buffer[256];
unsigned short serverPort = 27072;
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0) error("socket");
server.sin_family = AF_INET;
hp = gethostbyname("localhost");//have also tried my …Run Code Online (Sandbox Code Playgroud)