linux网络编程socket.doc_第1页
linux网络编程socket.doc_第2页
linux网络编程socket.doc_第3页
linux网络编程socket.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络编程的流程:客户端:1、 创建一个socket;2、 绑定socket(IP,端口号);因为在connect()中已经绑定了,所以不需要用blind()函数来绑定。serv_addr.sin_family=AF_INET;serv_addr.sin_port=htons(MYPORT); /端口号也就是进程,相当于应用程序的编号。端口号要与服务端的一致,所以绑定的端口号是服务端的端口号serv_addr.sin_addr.s_addr=inet_addr(IP); /绑定的IP是本机的IP3、 发送建立连接请求connect();4、 收到连接响应;5、 发送数据send();6、 关闭socket, close(sock_fd)。服务端端:1、 创建一个socket;2、 绑定socket(IP,端口号),blind();my_addr.sin_family = AF_INET;my_addr.sin_port = htons(MYPORT); /绑定的端口号是自己的端口号my_addr.sin_addr.s_addr = INADDR_ANY; / IP是客户端任意一个IP3、 侦听来自客户端的连接请求,listen();4、 有客户端连接请求,为建立请求的客户端创建一个socket,返回连接响应,accept();5、 接受客户端发送的数据,recv();6、 关闭,close(new_fd)。#include #include #include #include #include #include #include #include #define MYPORT 3999 /listening port#define BACKLOG 10 /max connect requests#define MAXDATASIZE 100 /*max data volume */#define IP 127.0.0.1main(int argc,char *argv) int sock_fd,numbytes;/ char *buf;/ buf=(char *)malloc(20); char buf20; struct hostent *host; struct sockaddr_in serv_addr;/*socket*/ if(sock_fd=socket(AF_INET,SOCK_STREAM,0)=-1) perror(socket creat error);exit(1); serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(MYPORT); / serv_addr.sin_addr=inet_addr(IP); serv_addr.sin_addr.s_addr=inet_addr(IP); bzero(&(serv_addr.sin_zero),8);/*connect*/ if(connect(sock_fd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr)=-1) perror(connect error);exit(1); printf(Please enter the string:n); gets(buf);/*send*/ if(numbytes=send(sock_fd,buf,strlen(buf),0)=-1) perror(send error);exit(1); printf(send:%dn,numbytes); close(sock_fd); exit(0);#include #include #include #include #include #include #include #include #define MYPORT 3999/listening port#define BACKLOG 10/max connect requests#define MAXDATASIZE 100/*max data volume */main()int sock_fd, new_fd, numbytes;/*sock_fd:listening socket;new_fd:data socket */struct sockaddr_in my_addr;/*server address */struct sockaddr_in their_addr;/*client address */int sin_size;char bufMAXDATASIZE;/*创建socket*/if (sock_fd = socket(AF_INET, SOCK_STREAM, 0) = -1) perror(socket create error);exit(1);my_addr.sin_family = AF_INET;my_addr.sin_port = htons(MYPORT);my_addr.sin_addr.s_addr = INADDR_ANY;bzero(&(my_addr.sin_zero), 8);if (bind (sock_fd, (struct sockaddr *) &my_addr, sizeof(struct sockaddr) = -1) perror(bind error);exit(1);printf(bind successn); if (listen(sock_fd, BACKLOG) = -1) perror(listen error);exit(1);/*accept*/while (1) sin_size = sizeof(struct sockaddr_in);if (new_fd = accept(sock_fd, (struct sockaddr *) &their_addr, &sin_size) = -1) perror(accept error);continue;printf(received a connect from:%sn, inet_ntoa(their_addr.sin_addr);if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论