#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
int main(int argc, char **argv)
{
printf("server ip: %s/n", argv[1]);
printf("server port: %s/n", argv[2]);
printf("/n service starting.../n/n");
int socketFd;
struct sockaddr_in svrAddr;
struct sockaddr_in localAddr;
socketFd = socket (AF_INET, SOCK_DGRAM, 0);
if ( -1 == socketFd )
{
perror( "socket:" );
exit(-1);
}
// 设置地址可复用
int option = 1;
setsockopt( socketFd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option) );
// 客户端IP
memset(&localAddr, 0, sizeof(localAddr));
localAddr.sin_family = AF_INET;
localAddr.sin_addr.s_addr = inet_addr( argv[1]);
localAddr.sin_port = htons (atoi(argv[2]));
int bindResult = bind(socketFd, (struct sockaddr *) &localAddr, sizeof(localAddr));
if ( -1 == bindResult )
{
perror( "bind:" );
close(socketFd);
exit(-1);
}
// 服务器IP
memset(&svrAddr, 0, sizeof(svrAddr));
svrAddr.sin_family = AF_INET;
svrAddr.sin_addr.s_addr = inet_addr( argv[1]);
svrAddr.sin_port = htons (atoi(argv[2]));
char tempBuff[2048] = {0};
for ( ; ; )
{
// 接收数据
struct sockaddr_in fromAddr;
memset((char *)&fromAddr, 0, (int)sizeof(fromAddr));
socklen_t fromLen = sizeof(fromAddr);
ssize_t result = recvfrom( socketFd, tempBuff, sizeof(tempBuff), 0, (struct sockaddr *)&fromAddr, &fromLen);
if ( -1 == result )
{
perror("recvfrom:");
continue;
}
else
{
printf( "recv data %s successed. data len: %d/n", inet_ntoa(fromAddr.sin_addr), result );
printf( "data:/n");
for ( int i = 0; i < result; i++ )
{
printf( "x ", tempBuff[i] );
if ( (i+1) == 0 )
{
printf( "/n" );
}
}
printf( "/n" );
}
// 发送数据
result = sendto( socketFd, tempBuff, result, 0, (struct sockaddr*)&fromAddr, sizeof(fromAddr));
if ( -1 == result )
{
perror("sendto:");
}
else
{
printf("send data success. data len:%d/n", result );
}
sleep( 60 );
}
close(socketFd);
}
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
typedef struct _NSS_HEADER
{
unsigned short ProtocolVersion; /* 协议版本信息 */
unsigned short MsgType; /* 消息类型 */
unsigned short TransactionNo; /* 传输编号 */
unsigned short PacketLength; /* 数据包长度,包括Header */
}NSS_HEADER;
int main(int argc, char **argv)
{
printf("client ip: %s/n", argv[1]);
printf("client port: %s/n", argv[2]);
printf("server ip: %s/n", argv[3]);
printf("server port: %s/n", argv[4]);
printf("/n service starting.../n/n");
int socketFd;
struct sockaddr_in svrAddr;
struct sockaddr_in localAddr;
socketFd = socket (AF_INET, SOCK_DGRAM, 0);
if ( -1 == socketFd )
{
perror( "socket:" );
exit(-1);
}
// 设置地址可复用
int option = 1;
setsockopt( socketFd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option) );
// 客户端IP
memset(&localAddr, 0, sizeof(localAddr));
localAddr.sin_family = AF_INET;
localAddr.sin_addr.s_addr = inet_addr( argv[1]);
localAddr.sin_port = htons (atoi(argv[2]));
int bindResult = bind(socketFd, (struct sockaddr *) &localAddr, sizeof(localAddr));
if ( -1 == bindResult )
{
perror( "bind:" );
sleep(10);
close(socketFd);
exit(-1);
}
// 服务器IP
memset(&svrAddr, 0, sizeof(svrAddr));
svrAddr.sin_family = AF_INET;
svrAddr.sin_addr.s_addr = inet_addr( argv[3]);
svrAddr.sin_port = htons (atoi(argv[4]));
char tempBuff[2048] = {0};
// 每分钟发送一次数据
NSS_HEADER hdr;
memset( &hdr, 0, sizeof(NSS_HEADER));
for ( ; ; )
{
// 发送数据
hdr.TransactionNo++;
ssize_t result = sendto( socketFd, &hdr, sizeof(NSS_HEADER), 0, (struct sockaddr*)&svrAddr, sizeof(svrAddr));
if ( -1 == result )
{
perror("sendto:");
}
else
{
printf("send data success. data len:%d/n", result );
}
// 接收数据
struct sockaddr_in fromAddr;
memset((char *)&fromAddr, 0, (int)sizeof(fromAddr));
socklen_t fromLen = sizeof(fromAddr);
result = recvfrom( socketFd, tempBuff, sizeof(tempBuff), 0, (struct sockaddr *)&fromAddr, &fromLen);
if ( -1 == result )
{
perror("recvfrom:");
}
else
{
printf( "recv data %s successed. data len: %d/n", inet_ntoa(fromAddr.sin_addr), result );
printf( "data:/n");
for ( int i = 0; i < result; i++ )
{
printf( "x ", tempBuff[i] );
if ( (i+1) == 0 )
{
printf( "/n" );
}
}
printf("/n");
}
sleep( 60 );
}
close(socketFd);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有