`
java-mans
  • 浏览: 11440396 次
文章分类
社区版块
存档分类
最新评论

《Windows API巡礼》---sendto和recvfrom

 
阅读更多

sendto函数用于将数据发送到指定的地址:

int sendto(

__in SOCKET s, //指定套接字(可能已连接)

__in const char *buf, //指向将要发送数据的缓冲区

__in int len, //缓冲区大小

__in int flags, //指定数据传输方式

__in const struct sockaddr *to, //可选的指针,指向存储目标套接字地址信息的sockaddr结构

__in int tolen //to参数指向结构的字节大小

);

返回值:

成功时,返回发送的字节数;

失败时,返回SOCKET_ERROR,调用WSAGetLastError函数查看进一步错误信息。

sendto函数实例如下:

#include <windows.h>

#include <stdio.h>

#include "winsock2.h"

// Link with Ws3_32.lib

void main() {

WSADATA wsaData;

SOCKET SendSocket;

sockaddr_in RecvAddr;

int Port = 27015;

char SendBuf[1024];

int BufLen = 1024;

//---------------------------------------------

// Initialize Winsock

WSAStartup(MAKEWORD(2,2), &wsaData);

//---------------------------------------------

// Create a socket for sending data

SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

//---------------------------------------------

// Set up the RecvAddr structure with the IP address of

// the receiver (in this example case "192.168.1.1")

// and the specified port number.

RecvAddr.sin_family = AF_INET;

RecvAddr.sin_port = htons(Port);

RecvAddr.sin_addr.s_addr = inet_addr("192.168.1.1");

//---------------------------------------------

// Send a datagram to the receiver

printf("Sending a datagram to the receiver.../n");

sendto(SendSocket,

SendBuf,

BufLen,

0,

(SOCKADDR *) &RecvAddr,

sizeof(RecvAddr));

//---------------------------------------------

// When the application is finished sending, close the socket.

printf("Finished sending. Closing socket./n");

closesocket(SendSocket);

//---------------------------------------------

// Clean up and quit.

printf("Exiting./n");

WSACleanup();

return;

}

recvfrom函数用于接收数据报并存储发送方源地址信息:

int recvfrom(

__in SOCKET s, //指定一个绑定的socket

__out char *buf, //存放接到的数据的缓冲区

__in int len, //缓冲区字节大小

__in int flags, //指定传输控制方式

__out struct sockaddr *from, //可选的指针,函数成功返回后,

//指向存储源套接字地址信息的sockaddr结构

__inout_opt int *fromlen //from的字节大小

);

返回值:

成功时,返回接收的字节数;

失败时,返回SOCKET_ERROR,调用WSAGetLastError函数查看进一步错误信息。

recvfrom函数实例如下:

#include <windows.h>

#include <stdio.h>

#include "winsock2.h"

void main() {

WSADATA wsaData;

SOCKET RecvSocket;

sockaddr_in RecvAddr;

int Port = 27015;

char RecvBuf[1024];

int BufLen = 1024;

sockaddr_in SenderAddr;

int SenderAddrSize = sizeof(SenderAddr);

//-----------------------------------------------

// Initialize Winsock

WSAStartup(MAKEWORD(2,2), &wsaData);

//-----------------------------------------------

// Create a receiver socket to receive datagrams

RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

//-----------------------------------------------

// Bind the socket to any address and the specified port.

RecvAddr.sin_family = AF_INET;

RecvAddr.sin_port = htons(Port);

RecvAddr.sin_addr.s_addr = htonl(INADDR_ANY);

bind(RecvSocket, (SOCKADDR *) &RecvAddr, sizeof(RecvAddr));

//-----------------------------------------------

// Call the recvfrom function to receive datagrams

// on the bound socket.

printf("Receiving datagrams.../n");

recvfrom(RecvSocket,

RecvBuf,

BufLen,

0,

(SOCKADDR *)&SenderAddr,

&SenderAddrSize);

//-----------------------------------------------

// Close the socket when finished receiving datagrams

printf("Finished receiving. Closing socket./n");

closesocket(RecvSocket);

//-----------------------------------------------

// Clean up and exit.

printf("Exiting./n");

WSACleanup();

return;

}

分享到:
评论

相关推荐

    recvfrom()和sendto()函数

    recvfrom()和sendto()函数

    Qt实现Windows的SendTo菜单

    本资源在Qt平台下利用Windows API实现Windows发送到(SendTo)菜单,并实现菜单项单击功能。

    tcp.rar_UDP recvfrom_tcp_tcp sendto_udp 函数_udp_sendto

    UDP实现的简易通讯程序 用sendto(),recvfrom()函数实现客户机与服务器之间的信息交换。

    右键转换调整图片(SendTo-Convert)v27.3.0英文免费安装版(3264bit)

    SendTo-Convert 是一个图片格式转换软件,在操作方面比较特别,安装好软件后,会在鼠标右键菜单「发送到」中看到它的选项,除了能转换图片格式外,还可以对图片进行简单的大小裁剪处理功能很简单,可以让你右键点击...

    nautilus-sendto-3.8.6-2.el8.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    css.rar_WSASend_WSASendTo与Send_WSASendto_recvfrom_wsasend pudn

    主要有调整的处理接口TCP组的有 send WSASend UDP组的是 sendto recvfrom WSASendto WSARecvfrom 下面的这四个发出封包接口参数二,封包地址,数据类型为整数型,1.8版模块需要选中参考项,原1.5版无需选参考 send ...

    网络socket编程指南

    13) sendto()和recvfrom()函数 14) close()和shutdown()函数 15) getpeername()函数 16) gethostname()函数 17) 域名服务(DNS) 18) 客户-服务器背景知识 19) 简单的服务器 20) 简单的客户端 21) 数据报套...

    封包助手包括Send,Recv,WSASend,WSARecv,SendTo等

    封包助手是一个能拦截网络应用程序数据包的纯绿色软件(压缩包不足400KB,无插件无病毒,不需安装),包括Send,Recv,WSASend,WSARecv,SendTo,RecvFrom,WSASendTo,WSARecvFrom。 封包助手还可以拦截Connect和Accept...

    聊天项目

    kakaoClone실행 -Dspring.profiles.active = dev java -Dspring.profiles.active = prod -jar api.jar(운영배포) java -Dspring.profiles.active = dev -jar api.jar(개발배포)小费网络套接字 ...sendto-mapping h

    Jatchfiles:Windows维护脚本(批处理文件中的JScript)

    档案文件Windows维护脚本(批处理文件中的JScript)内容ln.cmd-mklink包装器。 sendto.cmd-SendTo维护工具。 startup.cmd-启动维护工具。 please.cmd-以管理员身份执行。 chpath.js-使用notepad.exe编辑Root-%PATH...

    SendTo+

    本软件是用批处理制作的实用小...多文件操作时出现“Windows 无法访问指定设备、路径或文件。您可能没有合适的权限访问这个项目。”错误提示,是选择的文件太多,超过命令行的字符限制,解决的办法是减少文件的选择量。

    精通Windows Sockets网络开发:基于Visual C++实现-带源码

    精通Windows Sockets网络开发——基于Visual C++实现 目 录 第1篇网络开发基础篇 第1章准备开发环境 1.1windows sockets开发概述 1.1.1网络程序开发应用 1.1.2网络程序结构——c/s、b/s 1.1.3网络程序通信基础——...

    查看对方的MAC地址和主机名的c源代码

    原理:建立socket ,构造netbios-ns包,sendto()把数据发送给对方,recvfrom()读取返回信息。根据返回的netbios回应包,读取对方的主机名,组名和mac地址。 显示结果如下: IP Address :192.166.48.129 Host ...

    sendto 快捷键COPY文件更方便快捷

    一键增加sendto快捷键 。使得COPY文件更方便快捷。只是个样本 按照做就行了

    SockMon网络监视工具 2005

    对WindowsSocket一系列重要API的监视与调试,能够支持将socket数据截停的后等待修改的软件功能介绍:跟踪网络函数recv,send,recvfrom,sendto等函数执行过程可以详细地查询:源IP/端口,目标IP/端口,进程路径等等...

    nautilus-sendto-3.8.6-2.el8.aarch64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    nautilus-sendto-3.8.6-2.el8.ppc64le.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    c语言UDP传输系统源码.zip

    程序中使用了Winsock API中的多个函数,如socket、bind、sendto、recvfrom等,来实现广播和多播的发送和接收功能。程序中还使用了一些特定的选项来设置广播和多播的相关参数,如端口号、接口地址、TTL值等。 总的来...

    mkhotkey:使用 Ctrl、Alt、Shift 的任意组合分配 Windows 内置热键-开源

    Windows 快捷方式属性只允许有限的热键组合。 mkhotkey 通过以编程方式将具有所需热键的快捷方式添加到用户程序菜单中的热键... 用法:发送到资源管理器上下文菜单中的 mkhotkey | mkhotkey - 从 SendTo 添加/删除

    nautilus-sendto-3.8.6-1.el7.x86_64.rpm

    离线安装包,亲测可用

Global site tag (gtag.js) - Google Analytics