iOS网络编程1-客户端和服务器

            总的来说,我们做移动开发或者说网络编程的就两步

                        1:根据url和参数将该发的东西给服务器

                        2:把服务器返回来的数据进行解析给用户

    

1:为什么要学习网络编程呢?

   移动网络应用=良好的UI+良好的用户体验+实时更新的数据
  网络编程是一种实时更新应用数据的常用手段
  网络编程是开发优秀网络应用的前提和基础

2:客户端和服务器

     

客户端(Client):移动应用(iOS、android等应用)
服务器(Server):为客户端提供服务、提供数据、提供资源的机器
请求(Request):客户端向服务器索取数据的一种行为
响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端

 

     作为移动开发工程师,主要的精力都是放在前端开发


服务器:

按照软件开发阶段来分,服务器可以大致分为2
远程服务器
别名外网服务器、正式服务器
使用阶段:应用上线后使用的服务器
使用人群:供全体用户使用
速度:服务器的性能、用户的网速
本地服务器
别名内网服务器、测试服务器
使用阶段:应用处于开发测试阶段使用的服务器
使用人群:仅供公司内部的开发人员、测试人员使用
速度:由于是局域网,所以速度飞快,有助于提高开发测试效率

那服务器的搭建问题我在前面的博文中已经讲过了,需要的可以去看看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个利用socket接口,实现压缩视频的网络传输的C++示例代码,分别是客户端服务器端的代码,使用TCP协议进行传输: 客户端代码: ```c++ #include <iostream> #include <fstream> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> using namespace std; int main(int argc, char *argv[]) { // 创建socket int sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) { cout << "Failed to create socket" << endl; return 1; } // 服务器地址信息 struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 服务器IP地址 server_addr.sin_port = htons(8888); // 服务器端口号 // 连接服务器 if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { cout << "Failed to connect to server" << endl; return 1; } // 打开压缩后的视频文件 ifstream video_file("compressed_video.mp4", ios::in | ios::binary); if (!video_file.is_open()) { cout << "Failed to open video file" << endl; return 1; } // 循环读取视频数据并发送 char buffer[1024]; while (!video_file.eof()) { video_file.read(buffer, sizeof(buffer)); int len = video_file.gcount(); if (len > 0) { if (send(sock, buffer, len, 0) != len) { cout << "Failed to send video data" << endl; return 1; } } } // 关闭文件和socket video_file.close(); close(sock); return 0; } ``` 服务器端代码: ```c++ #include <iostream> #include <fstream> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> using namespace std; int main(int argc, char *argv[]) { // 创建socket int server_sock = socket(AF_INET, SOCK_STREAM, 0); if (server_sock == -1) { cout << "Failed to create socket" << endl; return 1; } // 绑定IP地址和端口号 struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); // 服务器IP地址 server_addr.sin_port = htons(8888); // 服务器端口号 if (bind(server_sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { cout << "Failed to bind to port" << endl; return 1; } // 监听连接请求 if (listen(server_sock, 1) < 0) { cout << "Failed to listen to socket" << endl; return 1; } // 接受连接请求 struct sockaddr_in client_addr; socklen_t client_addr_len = sizeof(client_addr); int client_sock = accept(server_sock, (struct sockaddr *)&client_addr, &client_addr_len); if (client_sock < 0) { cout << "Failed to accept client connection" << endl; return 1; } // 打开视频文件 ofstream video_file("received_video.mp4", ios::out | ios::binary); if (!video_file.is_open()) { cout << "Failed to open video file" << endl; return 1; } // 循环接收视频数据并写入文件 char buffer[1024]; while (true) { int len = recv(client_sock, buffer, sizeof(buffer), 0); if (len <= 0) { break; } video_file.write(buffer, len); } // 关闭文件和socket video_file.close(); close(client_sock); close(server_sock); return 0; } ``` 在上述代码中,我们首先分别在客户端服务器端创建了TCP socket,并连接到服务器或者绑定本地IP地址和端口号,并开始监听连接请求。接下来,在客户端我们打开压缩后的视频文件,并循环读取视频数据并发送到服务器,在服务器端我们打开要保存接收到的视频数据的文件,并循环接收数据并写入到文件中。最后,我们关闭了文件和socket。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值