linux 网络编程综合实例,一个简单的linux下网络程序实例-网络编程入门

系统:fedora core 5

服务器端程序:

/*server*/#include#include#include#include#include#include#include#include#definePORT 8848#defineBACKLOG 1main()

{intlistenfd,connectfd;structsockaddr_in server;structsockaddr_in client;intsin_size;if(( listenfd=socket(AF_INET, SOCK_STREAM,0))==-1)

{

perror("Creating socket failed.");return0;

}intopt=SO_REUSEADDR;

setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR,&opt,sizeof(opt));

bzero(&server,sizeof(server));

server.sin_family=AF_INET;

server.sin_port=htons(PORT);

server.sin_addr.s_addr=htonl(INADDR_ANY);

printf("binding...");if(bind(listenfd, (structsockaddr*)&server,sizeof(structsockaddr))==-1) {

perror("Bind error");return0;

}

printf("listen...");if(listen(listenfd,BACKLOG)==-1){

perror("listen() error");return0;

}

printf("accept....");

sin_size=sizeof(structsockaddr_in);if((connectfd=accept(listenfd, (structsockaddr*)&client,(socklen_t*)&sin_size))==-1) {

perror("accept() error");return0;

}

printf("you got a connection from %s",inet_ntoa(client.sin_addr) );

send(connectfd,"welcome to my server.",22,0);

close(connectfd);

close(listenfd);

}

客户端程序:

/*client*/#include#include#include#include#include#include#include#include#include#definePORT 8848#defineMAXDATASIZE 100intmain(intargc,char*argv[])

{intfd, numbytes;charbuf[MAXDATASIZE];structhostent*he;interrno;structsockaddr_in server;if(argc!=2) {

printf("usage: %s ",argv[0]);return0;

}

printf("gethostbynem....");if((he=gethostbyname(argv[1]))==NULL){

printf("gethostbyname() error");return0;

}if((fd=socket(AF_INET,SOCK_STREAM,0))==-1){

printf("socket() error");return0;

}

bzero(&server,sizeof(server));

server.sin_family=AF_INET;

server.sin_port=htons(PORT);

server.sin_addr=*((in_addr*)he->h_addr);

printf("connecting...");if(connect(fd, (structsockaddr*)&server,sizeof(structsockaddr))==-1){//printf("connect() error ");perror("error");return0;

}if(( numbytes=recv(fd,buf,MAXDATASIZE,0))==-1){

printf("recv() error");return0;

}

buf[numbytes]='

操作:

[root@localhost tcpsocket]# ls

help  tcpsocketC.c  tcpsocketS.c

[root@localhost tcpsocket]# g++ -g -o myserver tcpsocketS.c -lc -lnsl

[root@localhost tcpsocket]# g++ -g -o myclient tcpsocketC.c -lc -lnsl

[root@localhost tcpsocket]# ls

help  myclient  myserver  tcpsocketC.c  tcpsocketS.c

[root@localhost tcpsocket]# ./myserver

binding...

listen...

accept....

[root@localhost tcpsocket]# netstat -a | grep 8848

tcp        0      0 *:8848                      *:*                         LISTEN

[root@localhost tcpsocket]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:13:D4:3E:9F:89

inet addr:125.221.160.241  Bcast:125.221.160.255  Mask:255.255.255.0

inet6 addr: fe80::213:d4ff:fe3e:9f89/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:39108 errors:0 dropped:0 overruns:0 frame:0

TX packets:46 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:2359238 (2.2 MiB)  TX bytes:4040 (3.9 KiB)

Interrupt:17 Base address:0xa000

lo        Link encap:Local Loopback

inet addr:127.0.0.1  Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING  MTU:16436  Metric:1

RX packets:2005 errors:0 dropped:0 overruns:0 frame:0

TX packets:2005 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:2078171 (1.9 MiB)  TX bytes:2078171 (1.9 MiB)

[root@localhost tcpsocket]# ./myclient 127.0.0.1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值