Unix c 网络编程 TCP
来源:互联网 发布:网络拓扑图图片 编辑:程序博客网 时间:2024/05/01 01:06
服务器端:
===============================================================================================
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <time.h>
int sockfd;
void do_service(fd)
{
long t = time(0);
char *s = ctime(&t);
write(fd,s,strlen(s));
}
void out_client(struct sockaddr_in clientaddr)
{
char buffer[16];
inet_ntop(AF_INET,&clientaddr.sin_addr.s_addr,buffer,sizeof(clientaddr));
unsigned short port = ntohs(clientaddr.sin_port);
printf("client ip:%s (%d)\n",buffer,port);
}
int main(int argc,char *argv[])
{
if(argc < 2)
{
fprintf(stderr,"usage: %s port\n",argv[0]);
exit(1);
}
//create socket
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd < 0)
{
fprintf(stderr,"socket: %s\n",strerror(errno));
exit(1);
}
//set ip and port
struct sockaddr_in addr;
memset(&addr,0,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(argv[1]));
addr.sin_addr.s_addr = INADDR_ANY;
//bind ip and port
int len = sizeof(addr);
if(bind(sockfd,(struct sockaddr*)&addr,len) < 0)
{
fprintf(stderr,"bind: %s\n",strerror(errno));
exit(1);
}
//begin to listen
if(listen(sockfd,10) < 0)
{
fprintf(stderr,"listen: %s\n",strerror(errno));
exit(1);
}
while(1)
{
struct sockaddr_in clientaddr;
int c_len = sizeof(clientaddr);
int fd = accept(sockfd,(struct sockaddr*)&clientaddr,&c_len);
if(fd < 0)
{
fprintf(stderr,"accept: %s\n",strerror(errno));
continue;
}
out_client(clientaddr);
do_service(fd);
close(fd);
}
return 0;
}
==============================================================================================
客户端:
==============================================================================================
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
int sockfd;
int main(int argc,char *argv[])
{
if(argc < 3)
{
fprintf(stderr,"usage: %s port\n",argv[0]);
exit(1);
}
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd < 0)
{
fprintf(stderr,"socket:%s\n",strerror(errno));
exit(1);
}
struct sockaddr_in sockaddr;
memset(&sockaddr,0,sizeof(sockaddr));
sockaddr.sin_family = AF_INET;
sockaddr.sin_port = htons(atoi(argv[2]));
inet_pton(AF_INET,argv[1],&sockaddr.sin_addr.s_addr);
socklen_t len = sizeof(sockaddr);
if(connect(sockfd,(struct sockaddr*)&sockaddr,len) < 0)
{
fprintf(stderr,"connect: %s\n",strerror(errno));
exit(1);
}
char buffer[1024];
memset(buffer,0,sizeof(buffer));
ssize_t n;
if((n = read(sockfd,buffer,1024)) < 0)
{
fprintf(stderr,"read: %s\n",strerror(errno));
exit(1);
}
else
{
printf("%s\n",buffer);
}
return 0;
}
===============================================================================================
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <time.h>
int sockfd;
void do_service(fd)
{
long t = time(0);
char *s = ctime(&t);
write(fd,s,strlen(s));
}
void out_client(struct sockaddr_in clientaddr)
{
char buffer[16];
inet_ntop(AF_INET,&clientaddr.sin_addr.s_addr,buffer,sizeof(clientaddr));
unsigned short port = ntohs(clientaddr.sin_port);
printf("client ip:%s (%d)\n",buffer,port);
}
int main(int argc,char *argv[])
{
if(argc < 2)
{
fprintf(stderr,"usage: %s port\n",argv[0]);
exit(1);
}
//create socket
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd < 0)
{
fprintf(stderr,"socket: %s\n",strerror(errno));
exit(1);
}
//set ip and port
struct sockaddr_in addr;
memset(&addr,0,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(argv[1]));
addr.sin_addr.s_addr = INADDR_ANY;
//bind ip and port
int len = sizeof(addr);
if(bind(sockfd,(struct sockaddr*)&addr,len) < 0)
{
fprintf(stderr,"bind: %s\n",strerror(errno));
exit(1);
}
//begin to listen
if(listen(sockfd,10) < 0)
{
fprintf(stderr,"listen: %s\n",strerror(errno));
exit(1);
}
while(1)
{
struct sockaddr_in clientaddr;
int c_len = sizeof(clientaddr);
int fd = accept(sockfd,(struct sockaddr*)&clientaddr,&c_len);
if(fd < 0)
{
fprintf(stderr,"accept: %s\n",strerror(errno));
continue;
}
out_client(clientaddr);
do_service(fd);
close(fd);
}
return 0;
}
==============================================================================================
客户端:
==============================================================================================
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
int sockfd;
int main(int argc,char *argv[])
{
if(argc < 3)
{
fprintf(stderr,"usage: %s port\n",argv[0]);
exit(1);
}
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd < 0)
{
fprintf(stderr,"socket:%s\n",strerror(errno));
exit(1);
}
struct sockaddr_in sockaddr;
memset(&sockaddr,0,sizeof(sockaddr));
sockaddr.sin_family = AF_INET;
sockaddr.sin_port = htons(atoi(argv[2]));
inet_pton(AF_INET,argv[1],&sockaddr.sin_addr.s_addr);
socklen_t len = sizeof(sockaddr);
if(connect(sockfd,(struct sockaddr*)&sockaddr,len) < 0)
{
fprintf(stderr,"connect: %s\n",strerror(errno));
exit(1);
}
char buffer[1024];
memset(buffer,0,sizeof(buffer));
ssize_t n;
if((n = read(sockfd,buffer,1024)) < 0)
{
fprintf(stderr,"read: %s\n",strerror(errno));
exit(1);
}
else
{
printf("%s\n",buffer);
}
return 0;
}
0 0
- Unix c 网络编程 TCP
- UNIX网络编程:TCP
- unix网络编程之tcp
- unix网络编程之一TCP/UDP
- UNIX网络编程----TCP客户端和服务器端
- UNIX网络编程笔记(1):TCP简介
- UNIX网络编程 TCP套接字选项
- unix 网络编程---select回射TCP,UDP
- Unix c 网络编程 UDP
- UNIX网络编程--TCP网络编程中的listen
- 《UNIX网络编程》TCP网络编程基础(1)
- 《UNIX网络编程》TCP网络编程基础(2)
- 唯快不破:UNIX网络编程--TCP网络编程中的listen
- UNIX网络编程(一)一个简易的TCP C/S模型(echo sever)
- 《UNIX网络编程》多线程TCP C/S服务器正常启动和正常结束过程剖析
- Unix网络编程—基本TCP套接字编程
- UNIX环境高级编程——TCP/IP网络编程
- UNIX网络编程——基本TCP套接字编程
- hdu2084 数塔 (动态规划)
- Unix c 网络编程——编程基础
- 去IOE关键技术分析_吕海波(新)
- 2015清华特奖答辩观后感
- LightOJ 1354 IP Checking (水)
- Unix c 网络编程 TCP
- 知道的越多,思考得越深,下的决策越正确
- HDU 4515 模拟
- Unix c 网络编程 UDP
- iOS开发计算文本尺寸
- uva 10167
- 汇编语言-[BX]和loop指令
- nyoj914Yougth的最大化【二分+贪心】
- Golang学习笔记 (一)