当前位置: 首页 > news >正文

宠物店网站模板登录入口

宠物店网站模板,登录入口,河北网络推广平台,网站seo网络优化公司1--基于TCP实现字符串对话 主要需求: 服务器端和客户端各传递 1 次字符串,基于 TCP 协议,传递字符串前先以 4 字节整数型方式传递字符串长度,剩余部分为字符串数据; 注:下面的代码基于 Windows 系统实现&am…

1--基于TCP实现字符串对话

主要需求:

        服务器端和客户端各传递 1 次字符串,基于 TCP 协议,传递字符串前先以 4 字节整数型方式传递字符串长度,剩余部分为字符串数据;

注:下面的代码基于 Windows 系统实现;

1-1--服务器端

// gcc string_server_win.c -o string_server_win -lwsock32
// string_server_win 9190#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>#define BUF_SIZE 1024
#define Len_SIZE 4void ErrorHandling(char *message){fputs(message, stderr);fputc('\n', stderr);exit(1);
}int main(int argc, char *argv[]){if (argc != 2) {printf("Usage: %s <port>\n", argv[0]);exit(1);}WSADATA wsaData; // init Socket libif(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){ ErrorHandling("WSAStartup() error!");}int Serv_sock = socket(PF_INET, SOCK_STREAM, 0); // create socketif (Serv_sock == -1) {ErrorHandling("socket() error");}struct sockaddr_in serv_addr; // allocate ip, portmemset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET;serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);serv_addr.sin_port = htons(atoi(argv[1]));if (bind(Serv_sock, (struct sockaddr*) &serv_addr, sizeof(serv_addr)) == -1){ ErrorHandling("bind() error");}if (listen(Serv_sock, 5) == -1) { // readyErrorHandling("listen() error");}struct sockaddr_in clnt_addr;int clnt_addr_size = sizeof(clnt_addr);for (int i = 0; i < 5; ++i) {int Clnt_sock = accept(Serv_sock, (struct sockaddr*) &clnt_addr, &clnt_addr_size);  // acceptif (Clnt_sock == -1){ErrorHandling("accept() error");}else{printf("Connected client %d \n", i+1);}while(1) {int over = 0, recv_len = 0, msg_len, recv_cnt;char msg[BUF_SIZE];while (recv_len == 0 || recv_len < msg_len + Len_SIZE) {recv_cnt = recv(Clnt_sock, (char*)&msg[recv_len], BUF_SIZE, 0);if (recv_cnt == -1) {ErrorHandling("read() error!");}if (recv_cnt == 0) {over = 1;break;}recv_len += recv_cnt;if (recv_len >= Len_SIZE) {memcpy(&msg_len, msg, Len_SIZE);}}msg[recv_len] = '\0';if (over == 1) {break;}printf("Message from client: %s", msg + Len_SIZE); // output message from clientfputs("Input message: ", stdout);fgets(msg + Len_SIZE, BUF_SIZE - Len_SIZE, stdin); // input messageint len = strlen(msg + Len_SIZE);memcpy(msg, &len, Len_SIZE);send(Clnt_sock, msg, Len_SIZE + len, 0); // send message to client}closesocket(Clnt_sock);}closesocket(Serv_sock);return 0;
}

1-2--客户端

// gcc string_client_win.c -o string_client_win -lwsock32
// string_client_win 127.0.0.1 9190#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>#define BUF_SIZE 1024
#define Len_SIZE 4void ErrorHandling(char *message){fputs(message, stderr);fputc('\n', stderr);exit(1);
}int main(int argc, char* argv[]){if (argc != 3) {printf("Usage: %s <IP> <port>\n", argv[0]);exit(1);}WSADATA wsaData; // init socket libif(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){ErrorHandling("WSAStartup() error!");}int sock = socket(PF_INET, SOCK_STREAM, 0);   // create socketif (sock == -1)ErrorHandling("socket() error");struct sockaddr_in serv_addr; // allocate ip, portmemset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET;serv_addr.sin_addr.s_addr = inet_addr(argv[1]);serv_addr.sin_port = htons(atoi(argv[2]));if (connect(sock, (struct sockaddr*) &serv_addr, sizeof(serv_addr)) == -1){ // connectErrorHandling("connect() error");}else {puts("Connected");}for(int i = 0; i < 3; i++) {char msg[BUF_SIZE];memset(msg, 0, BUF_SIZE);fputs("Input message: ", stdout);fgets(msg + Len_SIZE, BUF_SIZE - Len_SIZE, stdin); // input messageint len = strlen(msg + Len_SIZE);memcpy(msg, &len, Len_SIZE);send(sock, msg, Len_SIZE + len, 0); // send message to serverint recv_len = 0, msg_len = 0, recv_cnt = 0;while (recv_len == 0 || recv_len < msg_len + Len_SIZE) {recv_cnt = recv(sock, (char*)&msg, BUF_SIZE, 0);recv_len += recv_cnt;if (recv_len >= Len_SIZE) {memcpy(&msg_len, msg, Len_SIZE);}}msg[recv_len] = '\0';printf("Message from server: %s", msg + Len_SIZE);}closesocket(sock);return 0;
}

1-3--编译运行

# 服务器端
gcc string_server_win.c -o string_server_win -lwsock32
string_server_win 9190# 客户端
gcc string_client_win.c -o string_client_win -lwsock32
string_client_win 127.0.0.1 9190

1-4--基于 linux 实现

项目链接:Chapter5

2--基于TCP实现文件传输

http://www.yayakq.cn/news/274941/

相关文章:

  • wordpress仿社区惠州抖音seo策划
  • 网站开发需要学什么怎么做网站才能吸引人
  • 荣泰建设集团网站怎么在网上做公司的网站
  • 杭州住房和城乡建设部网站个体户网站备案
  • 网站开发需要后台吗凡科网站建设怎么样
  • 网站设计制作程序泰安网站建设
  • 做网站需求建晨网站建设有限公司
  • 辽阳专业网站建设品牌做网站单线程CPU和多线程cpu
  • 建怎么网站比较赚钱动态ip做网站
  • 网站营销推广有哪些做模具做什么网站
  • 免费开源门户网站系统深圳定制建站
  • 北京大兴区网站建设开发网站软件
  • 小区网站建设方案怎么写深圳建设银行宝安支行网站
  • 网站开发优秀论文做视频挣钱的网站
  • 行业资讯网站源码电子商务网站建设有哪些流程图
  • 西安的网站设计公司名称推广软文营销案例
  • 如网站性质为公司 请以企业备案用户体验较好的网站
  • 重庆seo网站个人备案网站能用公司
  • wordpress收件邮箱seo产品是什么意思
  • 织梦网站制作教程淘客网站开发公司
  • 创新的福州网站建设宁波seo搜索排名优化
  • app网站开发的特点移动网站建设优势
  • 做公司网站是永久性的吗大连免费建站
  • 邢台本地网站哪个网站好
  • 青岛市专业做网站的吗crm管理系统定制
  • 网站建立服务如何在百度上开店铺
  • 百度百科网站开发工信部信息备案网站首页
  • 哪个专业学习网站建设网站优化大计
  • 网络营销策略包含哪些要素常州seo外包
  • 宁波网站建设公司怎么报价网站建设去哪找客户