Unix c 网络编程 TCP
2015-11-08 17:13
441 查看
服务器端:
===============================================================================================
#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;
}
相关文章推荐
- java-模拟tomcat服务器
- Linux socket 初步
- Linux VS Unix:Linux欲一统天下 Unix不死
- java socket 注意的地方
- java socket 注意的地方
- C#基于socket模拟http请求的方法
- Lua下基本的网络编程示例
- 简单的Ruby中的Socket编程教程
- Socket不能选择本地IP连接问题如何解决
- C#之Socket操作类实例解析
- 使用C#来编写一个异步的Socket服务器
- C#使用Socket快速判断数据库连接是否正常的方法
- TCP版backshell的VBS脚本代码
- 科学知识:理解socket
- linux网络编程用到的网络函数详解用和使用示例
- php与flash as3 socket通信传送文件实现代码
- 解决time_wait强制关闭socket
- C#网络编程基础之进程和线程详解
- C++ 网络编程 总结
- C#使用Socket上传并保存图片的方法