Linux 网络应用开发(二)之socket编程
来源:互联网 发布:隐藏电话号码软件 编辑:程序博客网 时间:2024/05/17 03:51
socket编程例程
本例程讲解一个socket网络编程的一个简单例子!
/*server.c*/#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<unistd.h>#include<netinet/in.h>#define PORT 4321#define BUFFER_SIZE 1024#define MAX_COMN_NUM 5int main(){ struct sockaddr_in server_sockaddr,client_sockaddr; int client_fd; char buf[BUFFER_SIZE]; int sin_size,recvbytes; int sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1) { perror("socket"); exit(1); } printf("Socket id=%d\n",sockfd); server_sockaddr.sin_family=AF_INET; server_sockaddr.sin_port=htons(PORT); server_sockaddr.sin_addr.s_addr=INADDR_ANY; bzero(&(server_sockaddr.sin_zero),8); int i=1; setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i)); if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1) { perror("bind"); exit(1); } printf("bind success\n"); if(listen(sockfd,MAX_COMN_NUM)==-1) { perror("listen"); exit(1); } printf("Listening.....\n"); if((client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1) { perror("accept"); exit(1); } memset(buf,0,sizeof(buf)); if((recvbytes=recv(client_fd,buf,BUFFER_SIZE,0))==-1) { perror("recv"); exit(1); } printf("received a message: %s\n",buf); close(sockfd); exit(0);}/*client.c*/#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<netdb.h>#include<sys/types.h>#include<netinet/in.h>#include<sys/socket.h>#define PORT 4321#define BUFFER_SIZE 1024int main(int argc,char *argv[]){ int sockfd,sendbytes; char buf[BUFFER_SIZE]; struct hostent *host; struct sockaddr_in serv_addr; if(argc<3) { fprintf(stderr,"USAGE:./client Hostname Text\n"); exit(1); } if((host=gethostbyname(argv[1]))==NULL) { perror("gethostbyname"); exit(1); } memset(buf,0,sizeof(buf)); sprintf(buf,"%s",argv[2]); if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { perror("socket"); exit(1); } serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(PORT); serv_addr.sin_addr=*((struct in_addr *)host->h_addr); bzero(&(serv_addr.sin_zero),8); if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1) { perror("connect"); exit(1); } if((sendbytes=send(sockfd,buf,strlen(buf),0))==-1) { perror("send"); exit(1); } close(sockfd); exit(0);}
- Linux 网络应用开发(二)之socket编程
- linux socket网络编程(二)
- java网络socket编程(二)之Socket客户端
- linux网络编程之socket(UDP)
- linux网络编程之Socket
- linux socket网络编程之socket属性
- 服务器开发【二】----网络编程的基础SOCKET(2)
- linux网络编程之socket(二):C/S程序的一般流程和基本socket函数
- linux网络编程之socket(二):C/S程序的一般流程和基本socket函数
- linux网络编程之socket(二):C/S程序的一般流程和基本socket函数
- linux网络编程之socket(二):C/S程序的一般流程和基本socket函数
- linux网络编程之socket(二):C/S程序的一般流程和基本socket函数
- linux网络编程之socket(二):C/S程序的一般流程和基本socket函数
- linux网络编程之socket(二):C/S程序的一般流程和基本socket函数
- Linux—socket网络编程基本函数(二)
- Linux网络笔记二(UDP Socket 编程)
- linux socket网络编程二 基于tcp
- Android开发之网络编程(二)
- 使用DirectX截屏
- 近年来印象最深的几本书 .
- Mysql 导入导出数据结构及数据
- Find pairs equal zero -- Paypal
- 菜鸟玩云计算之十一:Hadoop 手动安装指南
- Linux 网络应用开发(二)之socket编程
- 比特币的唯一出路-可交易的大规模并行运算包
- 查看某一个shell脚本在什么位置 显示当前操作系统的名称
- newlisp 注释生成文档
- Find the maximum contiguous subsequence product -- InMobi
- android中的dp,px深度解析
- 如何编译无效对象
- 在静态库中,实现自动的初始化与卸载接口
- XP + VS2010 + DirectShow9.0 SDK 环境配置 遇到的问题