小工具知识网

当前位置: 首页 > 行业知识 > 网络编程 24/2/29 作业

行业知识

网络编程 24/2/29 作业

2026-10-31 10:26:14 来源:互联网转载

1、���维导图

2、 tcp

#include #define SER_IP "192.168.125.80"//服务器ip#define SER_PORT 6789//服务器端口号int main(int argc, const char *argv[]){//创建用于监听的套接字int sfd=-1;sfd=socket(AF_INET,SOCK_STREAM,0);if(sfd==-1){perror("socket error");return -1;}//绑定ip地址和端口号//1、填充地址信息结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);//2、绑定if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("bind error");return -1;}printf("bind success\n");//启动监听,允许客户端连接if(listen(sfd,128)==-1){perror("listen error");return -1;}printf("listen success\n");//当客户端发送连接请求创建新的通信套接字struct sockaddr_in cin;//定义接受客户端地址信息的结构体socklen_t socklen=sizeof(cin);//接收客户端地址信息结构体的大小int newfd=accept(sfd,(struct sockaddr*)&cin,&socklen);if(newfd==-1){perror("accept error");return -1;}printf("newfd=%d 您有新用户上线\n",newfd);printf("客户端ip:%s,端口号:%d\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port));//通信套接字与客户端进行数据收发char rbuf[128]="";while(1){//清空容器bzero(rbuf,sizeof(rbuf));//读取数据int res=recv(newfd,rbuf,sizeof(rbuf),0);if(res==0){printf("用户已下线\n");break;}printf("[%s:%d]:%s\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),rbuf);//回复strcat(rbuf,"ovo");send(newfd,rbuf,strlen(rbuf),0);}//关闭套接字close(newfd);close(sfd);return 0;}
#include #define SER_IP "196.168.125.80"#define SER_PORT 6789int main(int argc, const char *argv[]){//创建用于通信的套接字描述符int cfd=socket(AF_INET,SOCK_STREAM,0);if(cfd==-1){perror("socket error");return -1;}printf("cfd=%d\n",cfd);//绑定(非必须)//连接服务器//填充要连接的服务器地址信息结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);//连接服务器if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("connect error");return -1;}printf("connect success\n");//数据收发char wbuf[128]="";while(1){//清空数据bzero(wbuf,sizeof(wbuf));printf("please enter:");fgets(wbuf,sizeof(wbuf),stdin);wbuf[strlen(wbuf)-1]=0;//数据发送给服务器send(cfd,wbuf,strlen(wbuf),0);printf("send success\n");//接收消息bzero(wbuf,sizeof(wbuf));recv(cfd,wbuf,sizeof(wbuf),0);printf("u recv:%s\n",wbuf);}//关闭套接字文件close(cfd);return 0;}

 2、udp

#include #define SER_IP "192.168.125.80"//服务器ip#define SER_PORT 6789//服务器端口号int main(int argc, const char *argv[]){//创建通信套接字int sfd=socket(AF_INET,SOCK_DGRAM,0);if(sfd==-1){perror("socket error");return -1;}printf("sfd=%d\n",sfd);//绑定ip地址和端口号//1、填充地址信息结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);//2、绑定if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("bind error");return -1;}printf("bind success\n");//3、收发数据char rbuf[128]="";//定义容器接收对端地址信息结构体struct sockaddr_in cin;socklen_t socklen=sizeof(cin);while(1){//清空数组bzero(rbuf,sizeof(rbuf));//接收数据recvfrom(sfd,rbuf,sizeof(rbuf),0,(struct sockaddr*)&cin,&socklen);printf("u recv:%s\n",rbuf);//回复strcat(rbuf,"ovo");if(sendto(sfd,rbuf,strlen(rbuf),0,(struct sockaddr*)&cin,socklen)==-1){perror("sendto error");return -1;}}//关闭套接字close(sfd);return 0;}
#include #define SER_IP "192.168.125.80"//服务器ip#define SER_PORT 6789//服务器端口号int main(int argc, const char *argv[]){//创建通信套接字int cfd=socket(AF_INET,SOCK_DGRAM,0);if(cfd==-1){perror("socket error");return -1;}printf("cfd=%d\n",cfd);//绑定ip地址和端口号char wbuf[128]="";//定义容器记录服务器地址信息结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);while(1){//清空数组bzero(wbuf,sizeof(wbuf));//从终端获取数据printf("please enter:");fgets(wbuf,sizeof(wbuf),stdin);wbuf[strlen(wbuf)-1]=0;//发送数据给服务器sendto(cfd,wbuf,sizeof(wbuf),0,(struct sockaddr*)&sin,sizeof(sin));printf("send success\n");//接收服务器回复的消息bzero(wbuf,sizeof(wbuf));recvfrom(cfd,wbuf,sizeof(wbuf),0,NULL,NULL);printf("u recv:%s\n",wbuf);//关闭套接字文件close(cfd);}return 0;}

上一篇:Mac用户必备,轻松下载Apple Store购物应用攻略!

下一篇:win10服务器管理器怎么添加服务器?