📄 client.cpp
字号:
// Linux 下编译通过
// 编写:寥智亨
// 日期:2006.3.20
// 说明:目前只发送一串字符,未加入报文结构,所以不能和服务器端格式不兼容
#include <stdio.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define SERVPORT 12345
#define SERVER_IP "127.0.0.1" /*默认服务IP为自己*/
#define MAXDATASIZE 100 /* 每次最大数据传输量 */
void main (int argc, char *argv[])
{
int sockfd, recvbytes;
char buf[MAXDATASIZE];
char *ServerIP = new char[16];
struct hostent *host;
struct sockaddr_in serv_addr;
enum TYPE{BORN, WAKE, SLEEP}; /*节点状态*/
struct Paragram /*报文结构*/
{ int SourceNode;
TYPE Type;
int DestinationNode;
char sin_addr[15];
};
Paragram *SendMessenge = new Paragram;
SendMessenge->SourceNode=102;
SendMessenge->Type=BORN;
SendMessenge->DestinationNode=22;
strcpy(SendMessenge->sin_addr, ServerIP);
if (argc < 2)
strcpy(ServerIP ,SERVER_IP); /*没输入服务器IP时默认为本机*/
else
strcpy(ServerIP ,argv[1]);
printf("Connect to %s\n", ServerIP);
if ((host = gethostbyname (ServerIP)) == NULL)
{
perror ("gethostbyname 出错!");
exit (1);
}
if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) == -1)
{
perror ("socket 创建出错!");
exit (1);
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons (SERVPORT);
serv_addr.sin_addr = *((struct in_addr *) host->h_addr); /*得到服务器地址*/
memset(&(serv_addr.sin_zero),0, 8);
if (connect(sockfd, (struct sockaddr *) &serv_addr,sizeof (struct sockaddr)) == -1)
{
perror ("connect 出错!");
exit (1);
}
if (send (sockfd, (char*)SendMessenge, 26, 0) == -1)
perror ("send 出错!");
if ((recvbytes = recv (sockfd, buf, MAXDATASIZE, 0)) == -1)
{
perror ("recv 出错!");
exit (1);
}
buf[recvbytes] = '\0';
printf ("Received: %s", buf);
closesocket (sockfd);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -