三國殺ol諸侯伐董模式 (BOSS介紹)
阿新 • • 發佈:2022-04-04
伺服器
#include<stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> int main(void) { int skt = socket(AF_INET, SOCK_DGRAM, 0); if(-1 == skt) { printf("socker error\n"); return -1; } //將IP和埠號存入結構體 struct sockaddr_in sddr; sddr.sin_family = AF_INET; sddr.sin_port = htons(6666); sddr.sin_addr.s_addr = inet_addr("0.0.0.0"); int len = sizeof(struct sockaddr_in); //將套接字和IP、埠號進行繫結 int ret = bind(skt, (structsockaddr *)&sddr, sizeof(sddr)); if(-1 == ret) { printf("bind error\n"); return -1; } char buf[100] = {'\0'}; while(1) { recvfrom(skt, buf, sizeof(buf), 0, (struct sockaddr *)&sddr, &len);//0表示阻塞 puts(buf); sendto(skt, buf, sizeof(buf), 0, (struct sockaddr *)&sddr, len);//0表示阻塞 memset(buf, 0,sizeof(buf)); } close(skt); return 0; }
客戶端
#include<stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> int main(void) { int skt = socket(AF_INET, SOCK_DGRAM, 0); if(-1 == skt) { printf("socker error\n"); return -1; } //將IP和埠號存入結構體 struct sockaddr_in sddr; sddr.sin_family = AF_INET; sddr.sin_port = htons(6666); sddr.sin_addr.s_addr = inet_addr("192.168.4.159"); int len = sizeof(struct sockaddr_in); char buf[100] = {'\0'}; while(1) { fgets(buf,100,stdin); sendto(skt, buf, sizeof(buf), 0, (struct sockaddr *)&sddr, len); memset(buf, 0,sizeof(buf)); recvfrom(skt, buf, sizeof(buf), 0, (struct sockaddr *)&sddr, &len); puts(buf); } close(skt); return 0; }