回射服务器的客户端
Posted Catch is KING
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回射服务器的客户端相关的知识,希望对你有一定的参考价值。
#include "unp.h"
int main(int argc,char**argv){
int sockfd;
struct sockaddr_in servaddr;
if(argc != 2)
err_quit("usage:tcpcli<IPaddress>");
sockfd = socket(AF_INET,SOCK_STREAM,0);
//SOCK_STRREAM为TCP协议,通信协议类型
bzero(&servaddr,sizeof(servaddr));
//置零,指针所指的前几位
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
//将整数由主机字节顺序转变成网络字节顺序unp.h中为9877-->SERV_PORT
inet_pton(AF_INET,argv[1],&servaddr.sin_addr);
//将点十进制的IP地址,转化为二进制的ip地址,赋给第三个参数的指针所指
connect(sockfd,(SA*)&servaddr,sizeof(servaddr));
//连接过程详解,没调用bind(),内核会为套接字选择一个端口
//服务器调用Listen,accept(),
//客户用connect()来连接服务器,&servaddr,中含有ip和port连接服务器
//未bind()时,内核选定源ip和port
//为tcp协议时,connect()激发了三次握手,成功或者出错才会返回一个值
str_cli(stdin,sockfd);
//stdin作为输入的文件指针,int sockfd作为文件标识符
exit(0);
}
//////////////////////////////////////////
#include "unp.h"
void str_cli(FILE *fp,int sockfd)
{
char sendline[MAXLINE],recvline[MAXLINE];
//字符串最大的数组
while(fgets(sendline,MAXLINE,fp)!=NULL){
//sendline作为字符型指针,指向存储读入数据的缓冲区地址
//fp作为读取的流
writen(sockfd,sendline,strlen(sendline));
//按照文件的操作方式操作sockfd接口
//sendline缓冲区作为发出的缓冲区
if(readline(sockfd,recvline,MAXLINE)==0)
err_quit("str_cli:server terminanted prematurely");
//readline()作用
fputs(recvline,stdout);
//stdout是一个文件指针是一个标准输出
}
}
以上是关于回射服务器的客户端的主要内容,如果未能解决你的问题,请参考以下文章