首页 > 代码库 > linux网络通信
linux网络通信
很老了的代码了,呵呵 最近在复习呢
//server #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> typedef struct sockaddr SA; int main(int argc,char **argv) { int listenfd; //也是以文件为操作,linux都是以文件为基础 int confd; socklen_t clilen; struct sockaddr_in myaddr,cliaddr; char buf[50] = "Welcome"; listenfd = socket(PF_INET,SOCK_STREAM,0) if(listenfd<0) { perror("fail to connect"); exit(-1); } //数据初始化 bzero(&myaddr,sizeof(myaddr)); myaddr.sin_family = PF_INET; myaddr.sin_addr.s_addr = inet_addr("192.168.1.1"); //ip myaddr.sin_port = htons(8888); //端口号 //绑定? 为什么要强制转换? if(bind(listenfd,(SA *)&myaddr,sizeof(myaddr))<0) { perror("fail to bind"); exit(-1); } listen(listenfd,5); while(1) { confd = accept(listenfd,(SA *)&cliaddr,sizeof(cliaddr)); printf("connection from %s,port %d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port)); send(connfd,buf,sizeof(buf),0); close(connfd); } return 0; }
//client #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> typedef struct sockaddr SA; int main(int argc,char **argv) { int sockfd,nbyte; struct sockaddr_in servaddr,myaddr; char buf[50]; sockfd = socket(PF_INET,SOCK_STREAM,0); if(sockfd<0) { perror("fail to connect\n"); exit(-1); } memset(0,&servaddr,sizeof(servaddr)); servaddr.sin_family = PE_INET; servaddr.sin_addr.s_addr = inet_addr("192.168.1.1"); //server ip servaddr.sin_port = htons(8888); if(connect(sockfd,(SA *)&servaddr,sizeof(servaddr))<0) { perror("connect error"); exit(-1); } if((nbyte = recv(sockfd,buf,50,0))<0) { perror("fail to recv"); exit(-1); } printf("recv from server:%s\n", buf); return 0; }
主要就是一个结构体
struct sockaddr_in
以及几个函数的操作,对于超时网络异常等需要有异常的维护
linux网络通信
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。