linux 下针对echo服务的tcp 客户端软件实现,电子科技大学计算机网络编程echo客户端的实现.doc...

#include #define LINELEN 128

extern int errno;

int TCPecho(const char *host, const char *service);

int errexit(const char *format,...);

int connectsock(const char *host, const char *service, const char *transport );

int connectTCP(const char *host, const char *service);

int main(int argc, char *argv[]){

char *host= "localhost";

char *service= "echo";

switch(argc){

case 1:

host = "localhost";

break;

case 3:

service = argv[2];

case 2:

host=argv[1];

break;

default:

fprintf(stderr,"usage:TCPecho[host[port]]\n");

exit(1);

}

TCPecho(host,service);

exit(0);

}

int TCPecho(const char *host,const char *service){

char buf[LINELEN+1];

int s,n;

int outchars, inchars;

s=connectTCP(host, service);

while(fgets(buf,sizeof(buf),stdin)){

buf[LINELEN]=\0;

outchars=strlen(buf);

(void)write(s,buf,outchars);

for(inchars=0;incharss_port;

else if ((sin.sin_port=htons((unsigned short)atoi(service))) == 0)

errexit("cant get \"%s\" service entry\n", service);

if ( phe = gethostbyname(host) )

memcpy(&sin.sin_addr, phe->h_addr, phe->h_length);

else if ( (sin.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE )

errexit("cant get \"%s\" host entry\n", host);

if ( (ppe = getprotobyname(transport)) == 0)

errexit("cant get \"%s\" protocol entry\n", transport);

if (strcmp(transport, "udp") == 0)

type = SOCK_DGRAM;

else

type = SOCK_STREAM;

s = socket(PF_INET, type, ppe->p_proto);

if (s < 0)

errexit("cant create socket: %s\n", strerror(errno));

if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0)

errexit("cant connect to %s.%s: %s\n", host, service,

strerror(errno));

return s;

}

int connectTCP(const char *host, const char *service){

return connectsock(host,service,"tcp");

}

4. 编译并调试程序

切换到源代码所在的目录,使用GCC指令进行编译

$ GCC –o echo_c echo_c.c

八、实验数据及结果分析:

在源程序所在的目录键入./echo_c命令,得到下面的运行结果:

九、总结、改进建议及心得体会:

1.在本次实验中,我复习了有关于ubtuntu的知识,对基本操作更加熟练。能够在ubtuntu操作系统下编写编译简单的C语言程序。同时也学会了比如ScureCRT等工具的使用。

2.加深了对于echo服务的理解,同时也锻炼了自己的编程能力。

【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】

精选范本,供参考!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值