windows下socket 编程可以用 writer函数发UDP吗及发包效率问题
各位大哥,小弟现在有出问题了,现在是把linux下的socket发udp包程序改为windows的,但是在windows下在vc++6.0中用到write&read 函数时都是报错,我根据错误自己查找改着不报错了,但是在运行时,都返回-1,也就是不可以使用,希望大家可以帮帮忙.谢谢!!
还有就是这样不行后,我使用了sendto()函数,可是这个函数的效率太低了不知道是我用错了还是有别的效率更好的发UDP包的函数,请指教!谢谢
为了大家可以更好的帮我我把函数也贴出来请大家帮帮忙!再次谢谢!
#include <winsock2.h>
#include <string.h>
#define MAX_SIZE 1400
#define SERV_PORT 8088
/*还要接库 "ws2_32.lib"*/
CString strip,strlen,strnum;
m_len.GetWindowText(strlen);
m_num.GetWindowText(strnum);
static int len,number;
DWORD ipaddr;
struct sockaddr_in servaddr;
char buf[MAX_SIZE];
int i,err;
((CIPAddressCtrl *)GetDlgItem(IDC_IPADDRESS1))->GetAddress(ipaddr);
len = strtol(strlen,NULL,10);
number = strtol(strnum,NULL,10);
if(len == NULL && len<0)
{
AfxMessageBox(" 老大 :长度不能为空和小于0");
}
/* if(argc != 3)
{
printf("useage:udpclient<IPaddress>;\n");
exit(1);
}
*/ memset(&servaddr,'0',sizeof(servaddr));
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );//通知操作系统,启用SOCKET的DLL库
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );//解除与Socket库的绑定并且释放Socket库所占用的系统资源
return;
}
SOCKET sockClient = socket( AF_INET , SOCK_DGRAM , 0 ) ;
struct sockaddr_in addrSrv ;
addrSrv.sin_addr.S_un.S_addr = htonl(ipaddr) ;
addrSrv.sin_family = AF_INET ;
addrSrv.sin_port = htons(SERV_PORT) ;
if(connect(sockClient,(struct sockaddr *)&addrSrv,sizeof(addrSrv)) == -1)
{
closesocket(sockClient);
AfxMessageBox("connect error!");
exit(1);
}
/*else
{
AfxMessageBox(" 老大 :connect server ok!");
}*/
memset(buf,'*',len);
for(i = 0;i<number;i++)
{
// write(sockClient,buf,len);
sendto(sockClient,buf, len , 0 , (SOCKADDR*)&addrSrv , sizeof(SOCKADDR)) ;
}
closesocket(sockClient);
AfxMessageBox(" 老大 :send complete!");
exit(1);
还有就是这样不行后,我使用了sendto()函数,可是这个函数的效率太低了不知道是我用错了还是有别的效率更好的发UDP包的函数,请指教!谢谢
为了大家可以更好的帮我我把函数也贴出来请大家帮帮忙!再次谢谢!
#include <winsock2.h>
#include <string.h>
#define MAX_SIZE 1400
#define SERV_PORT 8088
/*还要接库 "ws2_32.lib"*/
CString strip,strlen,strnum;
m_len.GetWindowText(strlen);
m_num.GetWindowText(strnum);
static int len,number;
DWORD ipaddr;
struct sockaddr_in servaddr;
char buf[MAX_SIZE];
int i,err;
((CIPAddressCtrl *)GetDlgItem(IDC_IPADDRESS1))->GetAddress(ipaddr);
len = strtol(strlen,NULL,10);
number = strtol(strnum,NULL,10);
if(len == NULL && len<0)
{
AfxMessageBox(" 老大 :长度不能为空和小于0");
}
/* if(argc != 3)
{
printf("useage:udpclient<IPaddress>;\n");
exit(1);
}
*/ memset(&servaddr,'0',sizeof(servaddr));
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );//通知操作系统,启用SOCKET的DLL库
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );//解除与Socket库的绑定并且释放Socket库所占用的系统资源
return;
}
SOCKET sockClient = socket( AF_INET , SOCK_DGRAM , 0 ) ;
struct sockaddr_in addrSrv ;
addrSrv.sin_addr.S_un.S_addr = htonl(ipaddr) ;
addrSrv.sin_family = AF_INET ;
addrSrv.sin_port = htons(SERV_PORT) ;
if(connect(sockClient,(struct sockaddr *)&addrSrv,sizeof(addrSrv)) == -1)
{
closesocket(sockClient);
AfxMessageBox("connect error!");
exit(1);
}
/*else
{
AfxMessageBox(" 老大 :connect server ok!");
}*/
memset(buf,'*',len);
for(i = 0;i<number;i++)
{
// write(sockClient,buf,len);
sendto(sockClient,buf, len , 0 , (SOCKADDR*)&addrSrv , sizeof(SOCKADDR)) ;
}
closesocket(sockClient);
AfxMessageBox(" 老大 :send complete!");
exit(1);
...全文
相关推荐
Go语言网络编程:net包的深度探索与实践
Go,又称为Golang,是一种由Google开发并开源的编程语言。它是一种静态类型、编译型语言,旨在提高编程效率并解决多核处理器上的性能问题。Go语言以其简洁、高效、并发支持而闻名,特别适合于构建大型软件系统和网络服务。 Go语言的主要特点包括: 1. **简洁性**:Go语言的语法非常简单,易于学习。 2. **编译速度**:Go的编译速度非常快,这使得开发周期大大缩短。 3. **并发性**:Go语言内置了对并发编程的支持,使用goroutine和channel可以轻松地实现并发操作。 4. **内存管理**:Go拥有自动垃圾回收机制,简化了内存管理。 5. **跨平台**:Go语言可以编译成多种操作系统和架构的可执行文件。 6. **标准库**:Go拥有丰富的标准库,涵盖了网络编程、文件处理、加密算法等多个领域。 Go语言广泛应用于服务器端编程、分布式系统、微服务架构、云服务、容器技术(如Docker和Kubernetes)等领域。
UWP开发之StreamSocket 开源 无需资源分
1、VS2017版本打开 2、StreamSocket属于UWP中的网络通信开发技术,UWP中的StreamSocket已具备很完整的网络通信能力,可适应网络开发中不同的开发需求。
portscanner
c# 端口扫描 c# 端口扫描c# 端口扫描
C# Send Message
C# Send Message
jdk api 1.8-google帮助手册
jdk api 1.8-google帮助手册


网络编程
