#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define MAXLINE 80
#define SERV_PORT 8000 /*端口号*/
int main(int argc,char *argv[])
{
struct sockaddr_in servaddr; /*定义服务器套接字结构体*/
char buf[MAXLINE];
int sockfd,n;
char *str;
if(argc!=2){
fputs("usage:./client message\n",stderr);
exit(1);
}
str=argv[1];
sockfd=socket(AF_INET,SOCK_STREAM,0); /*得到客户端的套接字*/
/*初始化服务器的套接字结构体*/
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
inet_pton(AF_INET,"127.0.0.1",&servaddr.sin_addr);/*inet_pton函数将字符串的类型网络IP地址转换为二进制类型的网络IP地址*/
servaddr.sin_port=htons(SERV_PORT);/*htons函数将数据转换为大端字节顺序host to network short*/
connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));/*将客户端的sockfd与服务器地址做连接,第二参数强制类型转换man connect*/
write(sockfd,str,strlen(str));
n=read(sockfd,buf,MAXLINE);
printf("Response from server:\n");
write(STDOUT_FILENO,buf,n);
printf("\n");
close(sockfd);
return 0;
}
客户端需要知道服务器的ip地址和端口号(初始化struct sockaddr_in serveraddr),需要用到inet转换函数和htonl(字节顺序函数)
connect()与服务器端连接