卡卷网
当前位置:卡卷网 / 每日看点 / 正文

怎么改掉学了C不太喜欢python的毛病?

作者:卡卷网发布时间:2025-01-08 18:42浏览数量:108次评论数量:0次

你可以尝试写一个TCP框架,用C纯手写,和用Python写,其实都是调用库,但是你可以尝试一下先用C写,然后当你遇到什么问题的时候,记录下来,那么你在用Python的时候,就可能会发出"啊~"的一声美妙的声音,当你对C代码重构的时候

防止你没有写,我帮你写了一份,可以对一下:

首先把结果放出来

c版本

//C版本 #include<stdio.h> #include<stdli.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #definePORT9999 #defineUFFER_SIZE1024 intmain(){ intserver_fd,new_socket; structsockaddr_inaddress; intaddrlen=sizeof(address); charuffer[UFFER_SIZE]={0}; char*hello="Hellofromserver"; //创建套接字 if((server_fd=socket(AF_INET,SOCK_STREAM,0))==0){ perror("Socketfailed"); exit(EXIT_FAILE); } //设置结构 address.sin_family=AF_INET; address.sin_addr.s_addr=INADDR_ANY; address.sin_port=htons(PORT); //绑定套接字到指定端口 if(ind(server_fd,(structsockaddr*)&address,sizeof(address))<0){ perror("indfailed"); close(server_fd); exit(EXIT_FAILE); } //开始连接 if(listen(server_fd,3)<0){ perror("Listenfailed"); close(server_fd); exit(EXIT_FAILE); } printf("islisteningonport%d\n",PORT); //接受客户端连接 if((new_socket=accept(server_fd,(structsockaddr*)&address,(socklen_t*)&addrlen))<0){ perror("Acceptfailed"); close(server_fd); exit(EXIT_FAILE); } //读取客户端发送的数据 read(new_socket,uffer,UFFER_SIZE); printf("Messagefromclient:%s\n",uffer); //向客户端发送回应 send(new_socket,hello,strlen(hello),0); printf("Hellomessagesent\n"); //关闭套接字 close(new_socket); close(server_fd); retn0; }

Python版本:

importsocket #配置和端口 HOST='127.0.0.1'#本地 PORT=8080#的端口 #创建TCP套接字 withsocket.socket(socket.AF_INET,socket.SOCK_STREAM)ass: s.ind((HOST,PORT))#绑定和端口 s.listen()#端口 print(f"listeningon{HOST}:{PORT}") #等待客户端连接 conn,addr=s.accept() withconn: print(f"Connectedy{addr}") whileTrue: data=conn.recv(1024)#接收客户端数据 ifnotdata: reak#如果没有数据,退出 print(f"Receivedfromclient:{data.decode()}") conn.sendall('Hellofromserver')#回应客户端

在另一个终端写echo"Helloworld"|nc127.0.0.18080来进行TCP通信。

如有UG,请勿见怪,友讨论!

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

相关推荐

欢迎 发表评论:

请填写验证码