Unix/Linux操作系统-网络通信Ⅱ

五、与阿里ECS服务器进行网络通信

  1. 开启端口号,详细操作请看视频
  2. 使用FlashFXP上传代码
  3. 使用putty远登陆ECS服务器,修改代码、编译、执行

六、基于UDP协议的C/S模型

头文件#include <sys/types.h> / #include <sys/socket.h>
函数声明ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
功能:UDP协议专用的数据发送函数
sockfd:套接字描述符
buf:待发送的缓冲区首地址
len:待发送的数据字节数
flags:0阻塞,1不阻塞
dest_addr:目标计算机地址
addrlen:地址结构体的字节数
返回值:成功发送的字节数


头文件#include <sys/types.h> / #include <sys/socket.h>
函数声明ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
功能:UDP协议专用的数据接收函数
sockfd:套接字描述符
buf:数据存储位置
len:最大接收字节数
flags:0阻塞,1不阻塞
src_addr:获取发送者的地址
addrlen:设置地址结构体的字节数
返回值:成功接收的字节数

编程模型

ServerClient
创建套接字(socket)创建套接字(socket)
准备地址(本机地址sockaddr_in)准备地址(目标机地址sockaddr_in)
绑定(bind(sockfd+addr))
接收请求(recvfrom)发送请求(sendto)
响应请求(sendto)接收响应(recvfrom)
关闭套接字(close)关闭套接字(close)

注意:从服务器到客户端返回的路线是UDP协议自己设计的。
练习1:获取当前计算机的ip地址和子网掩码。

  • system(“ifconfig > /tmp/ip.conf”);

练习2:根据当前ip地址和子网掩码,遍历出所有同一局域网内的ip地址。

作业1:指针银行升级为网络版。
作业2:实现网络聊天室。
作业3:网络传输文件。

七、windows下的网络的编程

  • 一般的软件都Linux/UNIX系统作为服务器,而windows系统作为客户端,windows下的socket编程的接口与Linux的基本一致,函数都声明在winsock2.h头文件中。

函数声明:int WSAStartup(WORD,LPWSADATA);
功能:初始化网络库
WORD:设置网络库的版本
MAKEWORD(1,2):第一个是主版本号,第副版本号
LPWSADATA:WSADATA数据结构的指针,用来获取网络的相关信息

函数声明SOCKET socket(int domain, int type, int protocol);
功能:创建socket
返回值:typedef u_int SOCKET;

函数声明closesocket(sockfd);
功能:关闭socket

函数声明int WSACleanup(void);
功能:卸载网络库

注意:编译时添加 -lws2_32,编译结果是a.exe

练习1:实现windows下的TCP的C/S通信。

练习2:实现windows下的UDP的C/S通信。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值