TCPIP实验报告
TCP IP网络协议分析实验报告

TCP/IP网络协议分析实验一、实验目的1. 通过实验,学习和掌握TCP/IP协议分析的方法及其相关工具的使用;2. 熟练掌握 TCP/IP体系结构;3. 学会使用网络分析工具;4. 网络层、传输层和应用层有关协议分析。
二、实验类型分析类实验三、实验课时2学时四、准备知识1.Windows 2003 server 操作系统2.TCP/IP 协议3.Sniffer工具软件五、实验步骤1.要求掌握网络抓包软件Wireshark。
内容包括:●捕获网络流量进行详细分析●利用专家分析系统诊断问题●实时监控网络活动●收集网络利用率和错误等2.协议分析(一):IP协议,内容包括:●IP头的结构●IP数据报的数据结构分析3.协议分析(二):TCP/UDP协议,内容包括:●TCP协议的工作原理●TCP/UDP数据结构分析六、实验结果1.IP协议分析:(1)工作原理:IP协议数据报有首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是IP数据报必须具有的。
首部分为,版本、首部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、首部检验和、源地址、目的地址、可选字段和数据部分(2)IPV4数据结构分析:2.TCP协议分析:(1)工作原理:TCP连接是通过三次握手的三条报文来建立的。
第一条报文是没有数据的TCP报文段,并将首部SYN位设置为1。
因此,第一条报文常被称为SYN分组,这个报文段里的序号可以设置成任何值,表示后续报文设定的起始编号。
连接时不能自动从1开始计数,选择一个随机数开始计数可避免将以前连接的分组错误地解释为当前连接的分组。
(2)TCP数据结构分析第一次握手:第二次握手:第三次握手:3.UDP协议分析:(1)工作原理:与我们所熟悉的TCP一样,UDP协议直接位于IP的顶层。
根据OSI(开放系统互联)参考模型,UDP和TCP都属于传输层协议。
UDP的主要作用是将网络数据流量压缩成数据报的形式。
TCPIP实验报告三正式

广东海洋大学
余乃飞
一.实验目的
1)理解客户机/服务器模型的工作原理
2)掌握套接字的概念。
3)掌握基于套接字的面向连接和无连接客户机/服务器程序的设计原理,了解相关的WINSOCK API 函数。
4)了解基于TCP和UDP 的程序设计方法。
二.相关示意图
三.实验程序与结果
多线程
读取来自客户机的命令,根据客户机的命令,决定服务器要发给客户机的信息,并发送给客户机。
多线程服务器程序。
服务器与客户端交互协议(实现服务器端与客户端交互的协议。
)
客户端源程序。
实验结果
UDP编程
利用DatagramSocket查询端口占用情况。
实验结果
利用数据报通信的C/S程序。
客户端
UDP服务器的程序。
实验结果
四.实验总结
通过这几次实验,使我对套接字编程有了初步的了解,也开了个头,这些编程很有趣,至少是我这样认为,因为有趣,所以有热情,我会在这方面多下功夫的,相信我会做得更好(至少相对自己来说)。
还有,我认为,要学好
套接字编程,至少学好其原理,就如上面的,如果你可以照着流程图编,相信很快就可以编出来了,同理,看程序也一样,要明程序,就先看流程图,了解其中的原理所在,这样就可以做到事半功倍了哦。
同时写程序的时候一定要学会分部分来写,这样就会很容易解决从中遇到的问题。
TCP(IP)组网技术实验报告模板5个

郑州轻工业学院TCP/IP组网技术实验报告学生姓名:宋苗苗专业班级: 3G软件13-02班学号: 541313140237 指导教师: 程立辉实验时间: 2016年4月21日至2016年6月9日成绩:目录实验一配置动态路由RIP (3)实验二配置静态路由 (7)实验三 Cisco VTP (13)试验四 PPP数据链路层协议 (21)实验五 Cisco EIGRP内部网关路由协议 (25)题目一配置动态路由RIP 一:实验目的1.了解掌握动态路由的相关知识;2.掌握了解RIP协议相关知识及应用;3.掌握如何用RIP协议实现动态路由的配置。
二:实验拓扑配置前拓扑图:配置后拓扑图:三:实验过程3.1路由器的基本配置3.1.1 路由器Router0的基本配置3.1.2 路由器Router1的基本配置3.1.3 路由器Router2的基本配置3.2 RIP路由协议配置3.2.1 路由器Router0的RIP路由协议配置3.2.2 路由器Router1的RIP路由协议配置3.2.3 路由器Router2的RIP路由协议配置3.3 RIP路由协议启用第二版3.4配置PC端的IP地址,如下:3.5 查看各路由器的路由表信息3.5.1 查看Router0路由表信息3.5.2 查看Router1路由表信息四:实验结果使用ping检查计算机不同网段互通情况五:实验总结通过本次实验,我了解了配置动态路由器方法和相关配置命令;掌握了路由器的RIP协议的配置方法;理解路由器连接不同类型网络的原理,而且在配置过程在需要特别注意各个路由器之间的连通性,确保其的正常联通。
遇到问题:动态路由器配置过程中对于网络IP的互通问题不是很清楚,通过查找资料,最终实现了动态路由配置。
题目二配置静态路由一:实验目的1.了解掌握静态路由的相关知识;2.掌握了解静态路由通信原理;3.掌握如何用实现静态路由的配置。
二:实验拓扑配置前拓扑图:配置后拓扑图:三:实验过程3.1路由器的基本配置3.1.1Router0的基本配置3.1.2 Router1的基本配置3.1.3 Router2的基本配置3.2为每个路由器配置静态路由3.2.1为路由器Router0配置到路由器Router1通信的静态路由3.2.2配置路由器Router1配置到路由器Router0的返回路径其余配置同上。
TCP_IP攻击实验_实验报告

中南大学TCP/IP攻击实验实验报告学生学院信息科学与工程学院专业班级完成时间 2015年11月29日目录1.实验描述 (3)2.实验步骤 (3)2.1 环境搭建 (3)2.2 实验1:ARP缓存中毒 (4)2.3 实验2:ICMP重定向攻击 (6)2.4 实验3:SYN洪流攻击 (7)2.5 实验4:在telnet和ssh连接上的TCP RST攻击 (10)2.6 实验5:对视频流应用程序的TCP RST攻击 (12)2.7 实验6:ICMP盲目连接重置和源端关闭攻击 (12)2.8 实验7:TCP报文劫持 (13)3.总结 (14)TCP/IP攻击实验1.实验描述【实验背景】由于TCP/IP协议是Internet的基础协议,所以对TCP/IP协议的完善和改进是非常必要的。
TCP/IP协议从开始设计时候并没有考虑到现在网络上如此多的威胁,由此导致了许多形形色色的攻击方法,一般如果是针对协议原理的攻击(尤其DDOS),我们将无能为力。
TCP/IP攻击的常用原理有:(1)源地址欺骗(Source Address Spoofing)、IP欺骗(IP Spoofing)和DNS欺骗(DNS Spoofing);(2) 路由选择信息协议攻击(RIP Attacks);(3) 源路由选择欺骗(Source Routing Spoofing) ;(4) TCP序列号欺骗和攻击(TCP Sequence Number Spoofing and Attack)。
【实验目的】基于TCP/IP协议进行攻击实验,了解TCP/IP协议的具体机制。
2.实验步骤2.1 环境搭建这里我使用三台虚拟机做实验,其中一个用于攻击;另一个用于被攻击;第三个作为观察者使用;把三台主机放在同一个LAN中,其配置信息参照如下所示(实际在实验过程中有所改动):这里我使用的是SEED实验室已经搭建好,并且已经安装好相关的netwox工具箱和Wireshark工具箱的Ubuntu系统,与此同时三台虚拟机都需要打开FTP和Telnet服务:使用如下命令来完成上述任务Start the ftp server# servicevsftpd startStart the telnet server# serviceopenbsd-inetd start2.2 实验1:ARP缓存中毒【实验背景】ARP缓存是ARP协议的重要的一部分。
实验四TCPIP协议属性设置报告

实验四TCPIP协议属性设置报告1.实验目的与简介TCP/IP(传输控制协议/因特网协议)是互联网使用的主要协议之一,它提供了网络通信中的可靠数据传输和连接服务。
本实验旨在通过设置TCP/IP协议的属性,来了解和掌握TCP/IP协议的一些基本特性和优化方法。
2.实验环境本实验使用Windows操作系统,并以本地局域网为实验网络环境。
实验中使用的工具主要包括网络设置界面和命令行窗口。
3.实验步骤3.1设置IP地址和子网掩码在Windows操作系统中,可以通过进入网络设置界面来设置本机的IP地址和子网掩码。
IP地址是用于区分不同计算机和其他网络设备的唯一标识,而子网掩码用于定义本地网络的范围。
3.2设置默认网关默认网关是指当计算机要向其他网络发送数据时,首先会将数据包发送到默认网关。
在网络设置界面中,可以设置默认网关的IP地址。
默认网关通常是本地局域网内连接互联网的路由器。
3.3设置DNS服务器DNS(域名系统)服务器用于将域名转换为对应的IP地址。
在网络设置界面中,可以设置DNS服务器的IP地址。
一般来说,可以使用本地路由器或者互联网服务提供商提供的DNS服务器。
3.4设置TCP/IP属性通过命令行窗口可以使用"ipconfig"命令查看当前TCP/IP属性的详细信息。
可以通过命令行窗口中的一系列命令来设置TCP/IP属性,例如设置TCP缓冲区大小、调整TCP拥塞控制算法等等。
3.5实验结果与分析设置完TCP/IP属性后,可以使用一些网络性能测试工具来评估网络连接的质量和性能。
例如可以使用Ping命令检测网络延迟和丢包率,使用速度测试工具来测试网络带宽等等。
4.实验总结与心得TCP/IP协议是互联网中最常用的通信协议之一,对于网络通信的质量和性能具有重要影响。
通过实验,我了解到TCP/IP协议的一些基本特性和连接调优方法,并且掌握了调整TCP/IP属性的操作方法。
在实验过程中,我发现通过调整TCP缓冲区大小可以提高TCP连接的传输速度,并且可以通过调整TCP的拥塞控制算法来改善网络拥塞时的传输性能。
tcpip实验报告

实验一Linux内核通用链表的使用一、实验目的学习Linux内核通用链表的设计原理,熟练掌握Linux内核通用链表的使用。
二、实验内容1、掌握Linux通用链表的创建2、掌握通用链表添加元素、删除元素和遍历链表的方法3、掌握通用链表的查找方法三、实现原理Linux的内核源文件list.h提供了所有的链表定义,以及各类链表的操作接口和实现。
其中创建链表的方法如下:LIST_HEAD(my_list);在指定的head后插入新节点,常用于堆栈数据结构的实现list_add(structlist_head *new, structlist_head *head);在指定的head前插入新节点,常用于队列数据结构的实现list_add_tail(structlist_head *new, structlist_head *head);从链表中删除一个指定节点list_del(structlist_head *entry);根据当前链表节点指针ptr获得宿主节点指针list_entry(ptr, type, member);遍历链表list_for_each(pos, head);四、实现代码和运行结果#include <stdio.h>#include <malloc.h>#include "list.h"struct user{int id;structlist_head list;};int main(void){struct user *p;LIST_HEAD(user_queue);for (inti = 0; i< 10; i++){p = (struct user *)malloc(sizeof(struct user));p->id = i;list_add_tail(&p->list, &user_queue);}structlist_head *q;list_for_each(q, &user_queue){p = list_entry(q, struct user, list);printf("%d\n", p->id);}return 0;}#include <stdio.h>#include <malloc.h>#include "list.h"struct user{char username[20];int id;structlist_head list;};int main(void){struct user *p;LIST_HEAD(head);for (inti; i< 10; i++){p = (struct user *)malloc(sizeof(struct user)); p->id = i + 1;printf("user %2d, Please input username: ", i+1); scanf("%s", p->username);list_add_tail(&(p->list), &head);}structlist_head *tmp;list_for_each(tmp, &head){p = list_entry(tmp, struct user, list);printf("%d\t%s\n", p->id, p->username);}list_for_each(tmp, &head){p = list_entry(tmp, struct user, list);if (p->id == 5)printf("%s\n", p->username);}return 0;}实验二Linux内核通用哈希链表的使用一、实验目的学习Linux内核通用哈希链表的设计原理,熟练掌握Linux内核通用哈希链表的使用。
实验四 TCPIP

实习四实验报告一、实习目的1.了解网络基本配置中包含的协议、服务、客户端,以及基本参数,并了解各种协议的作用,以及安装方法;2.掌握Windows支持的网络协议及参数设置方法;3.练习并掌握简单网络命令的使用。
二、实习内容1.查看所在机器的主机名称和网络属性,包括网络基本配置中包含的协议、服务、客户端,以及有关的基本参数;2.修改网络配置参数,建立小组内的局域网;3.网络协议、服务、客户端等组件的安装和卸载方法;4.常用网络命令的使用。
三、实习步骤1. 常用网络命令的使用(1)IPConfig●命令 ipconfig/all ,显示的信息如下:Windows IP ConfigurationHost Name . . . . . . . . . . . . :Primary Dns Suffix . . . . . . . :Node Type . . . . . . . . . . . . :IP Routing Enabled. . . . . . . . :WINS Proxy Enabled. . . . . . . . :Ethernet adapter 本地连接:Connection-specific DNS Suffix . :Description . . . . : 3Com 3C920 Integrated Fast EthernetController (3C905C-TX Compatible)Physical Address. . . . . . . . . :Dhcp Enabled. . . . . . . . . . . :IP Address. . . . . . . . . . . . :Subnet Mask . . . . . . . . . . . :Default Gateway . . . . . . . . . :DNS Servers . . . . . . . . . . . :(2) ping●在命令行下键入:Ping 127.0.0.1,显示以下信息:●在命令行下键入:Ping 本机IP地址,显示信息如下:说明网络配置正常。
TCP-IP攻击实验-实验报告.docx

中南大学TCP/IP 攻击实验实验报告学生姓名学院信息科学与工程学院专业班级完成时间2015年 11 月 29 日目录1. 实验描述 (3)2. 实验步骤 (3)环境搭建 (3)实验 1:ARP缓存中毒 (3)实验 2:ICMP重定向攻击 . (4)实验 3:SYN洪流攻击 (5)实验 4:在 telnet和ssh连接上的TCP RST攻击 (6)实验5:对视频流应用程序的TCP RST 攻击 (7)实验 6:ICMP 盲目连接重置和源端关闭攻击 (7)实验 7:TCP报文劫持 (8)3. 总结 (8)TCP/IP 攻击实验1.实验描述【实验背景】由于 TCP/IP 协议是 Internet的基础协议,所以对TCP/IP 协议的完善和改进是非常必要的。
TCP/IP 协议从开始设计时候并没有考虑到现在网络上如此多的威胁, 由此导致了许多形形色色的攻击方法,一般如果是针对协议原理的攻击( 尤其 DDOS),我们将无能为力。
TCP/IP 攻击的常用原理有:(1)源地址欺骗(Source Address Spoofing)Spoofing);、 IP欺骗 (IP Spoofing)和 DNS欺骗 (DNS(2)路由选择信息协议攻击 (RIP Attacks) ;(3) 源路由选择欺骗(Source Routing Spoofing);(4) TCP 序列号欺骗和攻击(TCP Sequence Number Spoofing and Attack)。
【实验目的】基于 TCP/IP 协议进行攻击实验, 了解 TCP/IP 协议的具体机制。
2.实验步骤环境搭建这里我使用三台虚拟机做实验,其中一个用于攻击;另一个用于被攻击;第三个作为观察者使用;把三台主机放在同一个LAN中,其配置信息参照如下所示(实际在实验过程中有所改动):这里我使用的是Wireshark工具箱的SEED实验室已经搭建好,并且已经安装好相关的Ubuntu 系统,与此同时三台虚拟机都需要打开netwoxFTP 和 Telnet工具箱和服务:使用如下命令来完成上述任务Start the ftp server#servicevsftpd startStart the telnet server#serviceopenbsd-inetd start实验 1:ARP缓存中毒【实验背景】ARP缓存是 ARP协议的重要的一部分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCP/IP技术实验报告书专业:[通信工程]学生姓名:[张世超]完成时间:9:28 AM实验一网络应用程序基础实验目得:通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程得基本知识,加深对课堂教学内容得理解,掌握套接字网络通信编程技术,能够运用VC++为开发工具编程解决网络通信中得实际问题,进行一些简单得网络应用程序设计。
实验内容:1,Winsock得启动与终止。
2,Winsock得创建及绑定与关闭。
3,建立通信连接listen及accept与connect。
4,数据得传输。
5,简单得客户机/服务器之间得通信。
要求:通过在SDK模式下完成数据通信得过程,掌握Windows Socket得常用函数得形式与使用方法,理解数据通信得过程。
实验步骤:1,打开VC环境1,使用向导为客户端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其她得选择默认设置2,在文件中添加代码3,编译调试4,使用向导为服务器端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其她得选择默认设置5,在文件中添加代码6,编译调试7,分别打开两个系统命令窗口中,并分别在其中运行客户端与服务器端程序。
8,在客户端侧输入字符,可以瞧到服务器收到字符串参考代码:课本156页--160页实验结果:Client:#include<Winsock2、h>#include<stdio、h>//服务器端口号为5050#define DEFAULT_PORT 5050#define DATA_BUFFER 1024void main(int argc,char *argv[]){ﻩWSADATA wsaData;SOCKET sClient;ﻩint iPort=DEFAULT_PORT;//从服务器端接收得数据长度int iLen;ﻩ//接收数据得缓冲char buf[DATA_BUFFER];ﻩ//服务器端地址ﻩstruct sockaddr_in ser;ﻩ//判断输入得参数就是否正确if(argc<2){//提示在命令行中输入服务器IP地址ﻩﻩprintf("Usage:client [server IP address]\n");return;}ﻩ//接收数据得缓冲区初始化ﻩmemset(buf,0,sizeof(buf));ﻩif(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)ﻩ{printf("Failed to load Winsock、\n");ﻩﻩreturn;ﻩ}ﻩ//填写要连接得服务器地址信息ﻩser、sin_family=AF_INET;ser、sin_port=htons(iPort);//inet_addr()函数将命令行得点分IP地址转换为用二进制表示得网络字节顺序得IP地址ﻩser、sin_addr、s_addr=inet_addr(argv[1]);ﻩ//建立客户端流式套接口ﻩsClient=socket(AF_INET,SOCK_STREAM,0);if(sClient==INVALID_SOCKET)ﻩ{ﻩﻩprintf("socket()Failed:%d\n",WSAGetLastError());ﻩreturn;ﻩ}//请求与服务器端建立TCP连接ﻩif(connect(sClient,(struct sockaddr*)&ser,sizeof(ser))==INVALID_SOCKET){printf("connect() Failed:%d\n",WSAGetLastError()); ﻩﻩreturn;}elseﻩ//从服务器端接收数据ﻩiLen=recv(sClient,buf,sizeof(buf),0);ﻩﻩif(iLen==0)ﻩreturn;else if(iLen==SOCKET_ERROR)ﻩ{ﻩﻩprintf("recv() Failed:%d",WSAGetLastError());ﻩreturn;ﻩ}ﻩprintf("recv() datafrom server:%s\n",buf);}closesocket(sClient);ﻩWSACleanup();}Server:#include<Winsock2、h>#include<stdio、h>#include<stdlib、h>#pragma ment(lib,"ws2_32、lib")//服务器使用得端口号为5050#define DEFAULT_PORT 5050void main(){ﻩint iPort=DEFAULT_PORT;WSADATA wsaData;ﻩSOCKET sListen,ﻩﻩsAccept;ﻩ//客户端地址长度int iLen;//发送得数据长度ﻩint iSend;//要发送给客户端得信息ﻩchar buf[]="I am a server、";//服务器与客户端得IP地址struct sockaddr_in ser,ﻩﻩcli;printf("---------------------------\n");ﻩprintf("Serverwaiting\n");ﻩprintf("---------------------------\n");ﻩif(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf("Failed to load Winsock、\n");ﻩreturn;ﻩ}ﻩ//创建服务器端套接口ﻩsListen=socket(AF_INET,SOCK_STREAM,0);if(sListen==INVALID_SOCKET)ﻩ{ﻩﻩprintf("socket() Failed:%d\n",WSAGetLastError());ﻩreturn;ﻩ}//以下建立服务器端地址ﻩser、sin_family=AF_INET;//htons()函数把一个双字节得主机直接顺序得数据转换为网络直接顺序得数ﻩser、sin_port=htons(iPort);ﻩ//htonl()函数把一个四字节得主机直接顺序得数据转换为网络直接顺序得数ﻩ//使用系统制定得IP地址INADDR_ANYser、sin_addr、s_addr=htonl(INADDR_ANY);if(bind(sListen,(LPSOCKADDR)&ser,sizeof(ser))==SOCKET_ER ROR){ﻩprintf("bind() Failed: %d\n",WSAGetLastError());ﻩreturn;ﻩ}ﻩ//进入监听状态ﻩif(listen(sListen,5)==SOCKET_ERROR)ﻩ{ﻩprintf("listen() Failed:%d\n",WSAGetLastError());ﻩﻩreturn;}ﻩ//初始化客户端地址长度参数iLen=sizeof(cli);ﻩ//进入一个无限循环,等待客户得连接请求while(1){ﻩﻩsAccept=accept(sListen,(struct sockaddr*)&cli,&iLen);ﻩif(sAccept==INVALID_SOCKET){ﻩﻩprintf("accept() Failed: %d\n",WSAGetLastError());ﻩbreak;ﻩﻩ}ﻩ//输出客户IP地址与端口号ﻩprintf("Acceptedclient IP:[%s],port:[%d]\n",ine t_ntoa(cli、sin_addr),ntohs(cli、sin_port));ﻩ//给建立连接得客户发送信息ﻩﻩiSend=send(sAccept,buf,sizeof(buf),0);if(iSend==SOCKET_ERROR)ﻩ{ﻩﻩprintf("send() Failed:%d\n",WSAGetLastError());ﻩbreak;ﻩ}ﻩﻩelse if(iSend==0)ﻩbreak;ﻩﻩelseﻩ{printf("send() byte:%d\n",iSend);printf("---------------------------\n");ﻩ}ﻩclosesocket(sAccept);ﻩ}closesocket(sListen);ﻩWSACleanup();}实验截图:实验二基于TCP协议得客户/服务器通信程序实验目得:通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程得基本知识,加深对课堂教学内容得理解,掌握套接字网络通信编程技术,能够运用VC++为开发工具编程解决网络通信中得实际问题,进行一些简单得网络应用程序设计。
实验内容:1,主机间TCP得性能测试之一:回程时延。
2,服务器端能从客户端接收数据并立即将接收到得数据原样返回给客户方。
3,客户端能往服务器端发送数据,然后立即接受从服务器端原样返回得数据。
理解TCP通信程序设计过程,并结合特定应用场景(如创建留言板程序、创建多客户端服务器/客户通信程序等)完成程序开发。
掌握TCP服务器程序与客户程序得创建过程,熟悉单播通信程序中用到得Winsock接口,培养学生将所学知识进行灵活运用得能力。
实验步骤:1,打开VC环境2,使用向导为客户端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其她得选择默认设置3,在文件中添加代码4,编译调试5,使用向导为服务器端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其她得选择默认设置6,在文件中添加代码7,编译调试8,分别打开两个系统命令窗口中,并分别在其中运行客户端与服务器端程序。
9,在客户端着输入字符,可以瞧到服务器收到字符串注:可以再实验一得代码上修改,自己增加额外得功能,比如取系统时间,计算往返时间等作完之后,修改通信代码使用UDP来实现网络通信实验结果:Client:#include<Winsock2、h>#include<stdio、h>#include<stdlib、h>#define DEFAULT_PORT 5050#define DATA_BUFFER 1024#pragma ment(lib,"WS2_32、lib")void main(int argc,char* argv[]){WSADATA wsaData;SOCKET sClient;ﻩint iPort=5050;int iLen;intisend,iRecv;char send_buf[]="Hello! I ama client";char recv_buf[DATA_BUFFER];ﻩstructsockaddr_inser;if(argc<2)ﻩ{printf("输入服务器得IP地址:\n");return;ﻩ}elsememset(recv_buf,0,sizeof(recv_buf));ﻩif(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)ﻩ{ﻩ printf("Winsock环境初始化失败:\n");ﻩ return;ﻩ}sClient=socket(AF_INET,SOCK_DGRAM,0);if(sClient==INVALID_SOCKET)ﻩ{printf("socket()函数调用失败:%d\n",WSAGetLastError());ﻩﻩ return;}ser、sin_family=AF_INET;ser、sin_port=htons(iPort);ser、sin_addr、s_addr=inet_addr(argv[1]);iLen=sizeof(ser);isend=sendto(sClient,send_buf,sizeof(send_buf),0,(struct sockaddr*)&ser,iLen);ﻩif(isend==SOCKET_ERROR)ﻩ{ﻩ printf("sendto()函数调用失败:%d\n",WSAGetLastError());ﻩ return;ﻩ}else if(isend==0)return;ﻩelseﻩprintf("sendto()调用成功:\n");iRecv=recvfrom(sClient,recv_buf,sizeof(recv_buf),0,(struct sockaddr*)&ser,&iLen);if(iRecv==SOCKET_ERROR){ﻩ printf("recvfrom()函数调用失败:%d\n",WSAGetLastError());ﻩ return;ﻩ}ﻩelse if(iRecv==0)return;else{ﻩﻩprintf("sendto():%s\n",recv_buf);printf("-------------------------------\n");}closesocket(sClient);WSACleanup();}Server:#include<Winsock2、h>#include<stdio、h>#include<stdlib、h>#defineDEFAULT_PORT 5050#define BUFFER_LENGTH 1024#pragmament(lib,"WS2_32、lib")void main(){int iPort=DEFAULT_PORT;WSADATA wsaData;SOCKET sSocket;ﻩint iLen,iRecv,iSend;ﻩstruct sockaddr_in ser,cli;ﻩchar send_buf[]="Hollo!I am aserver";ﻩchar recv_buf[BUFFER_LENGTH];printf("--------------------");printf("Serverwaiting");printf("--------------------");if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)ﻩ{ﻩprintf("环境初始化错误:\n");ﻩﻩreturn;}sSocket=socket(AF_INET,SOCK_DGRAM,0);if(sSocket==INVALID_SOCKET)ﻩ{ﻩprintf("socket()函数调用失败:\n",WSAGetLastError ());ﻩreturn;}ser、sin_family=AF_INET;ﻩser、sin_port=htons(iPort);ser、sin_addr、s_addr=htonl(INADDR_ANY);if(bind(sSocket,(LPSOCKADDR)&ser,sizeof(ser))==SOCKET_E RROR)ﻩ{printf("bind()函数调用失败:\n",WSAGetLastError()); ﻩﻩreturn;}iLen=sizeof(cli);memset(recv_buf,0,sizeof(recv_buf));ﻩwhile(1)ﻩ{iRecv=recvfrom(sSocket,recv_buf,BUFFER_LENGTH,0,(SOCKADDR*)&cli,&iLen);if(iRecv==SOCKET_ERROR)ﻩ {printf("recvfrom()函数调用失败:\n",WSAGetLastError());ﻩﻩbreak;ﻩ }ﻩ else if(iRecv==0)ﻩbreak;else{printf("recvfrom():%d\n",recv_buf);printf("客户端得IP地址、端口号:%d\n",inet_ntoa(cli、sin_addr),ntohs(cli、sin_port));ﻩ }ﻩ iSend=sendto(sSocket,send_buf,sizeof(send_buf),0,(SOCK ADDR*)&cli,sizeof(cli));if(iSend==SOCKET_ERROR){printf("sendto()函数调用失败:\n",WSAGetLastError());ﻩbreak;}else if(iSend==0)ﻩbreak;else{ﻩ printf("sendto():调用成功!\n");ﻩ }ﻩ}closesocket(sSocket);ﻩWSACleanup();}实验截图:实验三简易聊天系统得实现实验目得:通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程得基本知识,加深对课堂教学内容得理解,掌握套接字网络通信编程技术,能够运用VC++为开发工具编程解决网络通信中得实际问题,进行一些简单得网络应用程序设计。