69,368
社区成员
发帖
与我相关
我的任务
分享
#include <winsock.h>
#include <stdio.h>
#define MAXLINE 80
#define SERV_PORT 7000
void do_echo(int sockfd, struct sockaddr *pcliaddr)
{
int n;
int len = sizeof(struct sockaddr);
char mesg[MAXLINE];
for(;;)
{
/* waiting for receive data */
n = recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len);
printf("%s\n",mesg);
/* sent data back to client */
sendto(sockfd, mesg, n, 0, pcliaddr, len);
}
}
int main(int argc,char* argv[])
{
WSADATA wsadata;
if (WSAStartup(MAKEWORD(1,1),&wsadata)!=0)
{
printf("WSAStartup failed.");
return 1;
}
SOCKET server_socket;
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
//init servaddr
memset(&servaddr,0, sizeof(struct sockaddr_in));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);
server_socket = socket(PF_INET, SOCK_DGRAM, 0);
if(server_socket == -1)
{
printf("Create Server Socket Error.");
return 1;
}
// bind address and port to socket
if(bind(server_socket, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)
{
perror("bind error");
return 1;
}
do_echo(server_socket, (struct sockaddr *)&cliaddr);
closesocket(server_socket);
return 0;
}
#include <winsock.h>
#include <stdio.h>
#define MAXLINE 80
#define SERV_PORT 7000
int main(int argc,char* argv[])
{
WSADATA wsadata;
if (WSAStartup(MAKEWORD(1,1),&wsadata)!=0)
{
printf("WSAStartup failed.\n");
return 1;
}
int len = sizeof(struct sockaddr_in);
SOCKET client_socket;
struct sockaddr_in servaddr;
struct sockaddr_in addr2;
unsigned long l2;
char pData[MAXLINE]="l|100000|loginsucessful|";
/* init servaddr */
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
client_socket = socket(AF_INET, SOCK_DGRAM, 0);
if (client_socket == -1)
{
printf("Socket Create Fail.\n");
return 1;
}
//printf("Socket:%d\n",client_socket);
memset(&addr2, 0, sizeof(addr2));
addr2.sin_family = AF_INET;
addr2.sin_port = htons(SERV_PORT);
addr2.sin_addr.s_addr = inet_addr("192.168.1.53");
sendto(client_socket, pData, sizeof(pData), 0, (struct sockaddr *)&addr2, sizeof(addr2));
int bytesReceived = recvfrom(client_socket, pData, MAXLINE, 0, (struct sockaddr *)&addr2, &len);
printf("%s\n",pData);
closesocket(client_socket);
return 0;
}
int main(int argc, char **argv) //命令行的第二个参数代表服务器地址
{ int sockfd; //套接字
struct sockaddr_in servaddr; //服务器地址结构
/* 必须在命令行指定服务器地址*/
if (argc != 2) err_quit("usage: udpcli <IPaddress>");
bzero(&servaddr, sizeof(servaddr)); //地址结构清零
servaddr.sin_family = AF_INET; //IPv4
servaddr.sin_port = htons(SERV_PORT); //9877端口
/*网络字节序的IP地址*/
Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
/*建立UPD套接口*/
sockfd = Socket(AF_INET, SOCK_DGRAM, 0);
/*回射客户端子程序, stdin 为标准输入:键盘*/
dg_cli(stdin, sockfd, (SA *) &servaddr, sizeof(servaddr));
exit(0); //子程序结束后退出程序
}