实验二 基于 UDP 的 CS 通信模式
一、实验目的:
(1)熟悉基于 UDP 的 CS 通信模式
(2)掌握基于 UDP 的 CS 通信客户端、服务器端代码的编写
二、实验内容:
(一)简单的 UDP 通信
1 服务器端功能:
(1)绑定和连接成功时有提示信息
(2)打印出客户端的 IP 和端口
(3)服务器向客户端发送一句话:“I am a server”
(4)接收客户端发送的信息
2 客户器端功能:
(1) 客户向服务器发送一句话:“I am a client”
(2) 接收服务器端发送的信息
(二)基于 UDP 的简单聊天程序
实现功能:客户端和服务器可以进行简单的聊天功能,即能互发文字。
提示:修改上次上机的程序,根据下图调用函数,客户端可以不调用
bind,服务器端打印客户的 IP 和端口,客户的 IP 和端口存在 recvfrom()函数的
第 5 个参数中
三、实验步骤及代码:
(一)简单的 UDP 通信
(1) 客户端
#include <iostream.h>
#include <stdlib.h>
#include "winsock2.h"
#pragma comment (lib,"ws2_32.lib")
void main()
{
WSADATA wsd;
WSAStartup(MAKEWORD(2,2),&wsd);
SOCKET m_SockClient;
sockaddr_in clientaddr;//存放服务器的 IP 和端口
char recv_buf[1024];//接收数据的缓存
char send_buf[]="I AM a client";
int num;//接收的字节数
clientaddr.sin_family = AF_INET;
clientaddr.sin_port = htons(4600);
clientaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
m_SockClient = socket ( AF_INET,SOCK_DGRAM, 0 );
//connect(m_SockClient,(sockaddr*)&clientaddr,sizeof(clientaddr));
sendto(m_SockClient,send_buf,sizeof(send_buf),0,
(sockaddr*)&clientaddr,sizeof(clientaddr));
int len=sizeof(sockaddr);