北城半夏4806197 的学生作业:
#include
#include
#include
#include
#include /* See NOTES */
#include
#include
#include
int main(int argc, char const *argv[])
{
int sfd,ret;
struct sockaddr_in svr_addr;
ssize_t rbytes = 0,sbytes=0;
char buffer[1024] = {0};
if(argc < 3)
{
fprintf(stderr,"Usage : %s ip port!\n",argv[0]);
exit(EXIT_FAILURE);
}
sfd = socket(AF_INET,SOCK_STREAM,0);
if(sfd == -1)
{
perror("[ERROR] socket():");
exit(EXIT_FAILURE);
}
bzero(&svr_addr,sizeof(svr_addr)); //清零
svr_addr.sin_family = AF_INET;
svr_addr.sin_port = htons(atoi(argv[2]));
svr_addr.sin_addr.s_addr = inet_addr(argv[1]);
ret = connect(sfd,(const struct sockaddr *)&svr_addr,sizeof(struct sockaddr_in));
if(ret == -1)
{
perror("[ERROR] connect():");
exit(EXIT_FAILURE);
}
//客户端从键盘接收数据
while(1)
{
putchar('>');
bzero(buffer,sizeof(buffer)); //清零
fgets(buffer,64,stdin);
buffer[strlen(buffer)-1] = '\0';
sbytes = send(sfd,buffer,sizeof(buffer),0);
if(sbytes == -1)
{
perror("[ERROR] sbytes():");
exit(EXIT_FAILURE);
}
if(strncmp(buffer,"quit",4) == 0)
break;
}
//从客户端发送数据
rbytes = recv(sfd,buffer,sizeof(buffer),0);
if(rbytes == -1)
{
perror("[ERROR] send():");
exit(EXIT_FAILURE);
}
else if(rbytes == 0)
{
printf("The server hsa been shut down.\n");
}
else if(rbytes > 0)
{
printf("buffer : %s\n",buffer);
}
close(sfd);
return 0;
}
【图片】【图片】