socket编程python+c
python版:
server:
def socket_loop_server_function():
HOST = '192.168.56.1'
PORT = 21567
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.bind((HOST, PORT))
sk.listen(1)
while True:
sock, addr = sk.accept()
sock.sendall(b'begin')
flag=True
while flag:
data=sock.recv(1024)
print("recevied:%s" % data)
if data == bytes("msg1",encoding="utf-8"):
feedback=input("please input the feedback:")
sock.send(bytes(feedback, encoding='utf-8'))
if feedback == "over":
flag=False
if data == bytes("msg3",encoding="utf-8"):
feedback = input("please input the feedback:")
sock.send(bytes(feedback, encoding='utf-8'))
if feedback == "over":
flag = False
if data == bytes("msg5",encoding="utf-8"):
feedback = input("please input the feedback:")
sock.send(bytes(feedback, encoding='utf-8'))
if feedback == "over":
flag = False
sock.close()
break
print("connect finished")
client:
def socket_loop_customer_function():
HOST = '192.168.56.1'
PORT = 21567
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))
client.settimeout(10)
flag=True
while flag:
reveived_data=client.recv(1024)
print(reveived_data)
if reveived_data == bytes("over",encoding="utf-8"):
client.close()
flag=False
time.sleep(2)
if reveived_data == bytes("begin",encoding="utf-8"):
client.sendall(bytes('msg1', encoding="utf-8"))
if reveived_data == bytes("msg2",encoding="utf-8"):
client.sendall(bytes('msg3', encoding="utf-8"))
if reveived_data == bytes("msg4",encoding="utf-8"):
client.sendall(bytes('msg5', encoding="utf-8"))
print("connect closed")
c语言版:
在windows上用codeblocks编写socket需要导入socket的库,在complier中导入libws2_32.a和libwsock32.a
代码如下:
#include <winsock2.h>
#pragma comment(lib , "ws2_32.lib") #导入库
void socket_function(){
WSADATA wsd;
struct sockaddr_in dest;
char buf[400];
char sendbuf[400];
WSAStartup( MAKEWORD(2, 2), &wsd); #加载库
SOCKET socketfd= socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
dest.sin_family=AF_INET;
dest.sin_port=htons(21567);
dest.sin_addr.s_addr=inet_addr("192.168.56.1");
memset(&(dest.sin_zero),0,sizeof(struct sockaddr_in));
if(connect(socketfd,(struct sockaddr*)&dest,sizeof(struct sockaddr_in)) == -1){
printf("failed %d\n",WSAGetLastError());
}
while(1){
printf("connect success\n");
recv(socketfd,buf,1024,0);
printf("buf=%s\n",buf);
// strcpy(sendbuf,"msg1");
printf("please input the msg:\n");
scanf("%s",sendbuf);
send(socketfd,sendbuf,strlen(sendbuf),0);
}
closesocket(socketfd);
WSACleanup();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架