?? udpsender.cpp
字號:
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib")
#define MSG_SEND_BUFFER 2048 // 發送緩存的最大長度
int main(int argc, char **argv)
{
WSADATA wsd;
SOCKET send_s;
char *sendbuf = NULL;
int ret;
SOCKADDR_IN recv_addr;
int port;
int sendlen = MSG_SEND_BUFFER;
if(argc != 3)
{
printf("usage : %s [destip] [port]\n",argv[0]);
exit(1);
}
port=atoi(argv[2]);
// 初始化Winsock庫
if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0)
{
printf("WSAStartup error!\n");
exit(1);
}
// 創建UDP套接字
send_s = socket(AF_INET, SOCK_DGRAM, 0);
if (send_s == INVALID_SOCKET)
{
printf("socket() error; %d\n", WSAGetLastError());
exit(1);
}
// 設置接收端地址結構
recv_addr.sin_family = AF_INET;
recv_addr.sin_port = htons((u_short)port);
recv_addr.sin_addr.s_addr = inet_addr(argv[1]);
// 分配發送緩存空間
sendbuf = new char[MSG_SEND_BUFFER];
memset(sendbuf, 0, MSG_SEND_BUFFER);
// 開始發送消息
printf("向主機 %s 的 %d 端口發送消息...\n",argv[1],port);
while(1)
{
printf("請輸入要發送的信息:");
gets(sendbuf);
ret = sendto(send_s, sendbuf, sendlen, 0,
(SOCKADDR *)&recv_addr, sizeof(recv_addr));
if (ret == SOCKET_ERROR)
{
printf("sendto() error; %d\n", WSAGetLastError());
break;
}
else if (ret == 0)
break;
}
closesocket(send_s);
delete sendbuf;
WSACleanup();
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -