UDP及TCP通信程序的设计与实现实验报告文档格式.doc

上传人:b****1 文档编号:13162519 上传时间:2022-10-07 格式:DOC 页数:17 大小:523.50KB
下载 相关 举报
UDP及TCP通信程序的设计与实现实验报告文档格式.doc_第1页
第1页 / 共17页
UDP及TCP通信程序的设计与实现实验报告文档格式.doc_第2页
第2页 / 共17页
UDP及TCP通信程序的设计与实现实验报告文档格式.doc_第3页
第3页 / 共17页
UDP及TCP通信程序的设计与实现实验报告文档格式.doc_第4页
第4页 / 共17页
UDP及TCP通信程序的设计与实现实验报告文档格式.doc_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

UDP及TCP通信程序的设计与实现实验报告文档格式.doc

《UDP及TCP通信程序的设计与实现实验报告文档格式.doc》由会员分享,可在线阅读,更多相关《UDP及TCP通信程序的设计与实现实验报告文档格式.doc(17页珍藏版)》请在冰豆网上搜索。

UDP及TCP通信程序的设计与实现实验报告文档格式.doc

程序源代码(数据结构的描述、核心算法) 4

1.TCP通信程序源代码 4

2.TCP通信程序数据结构的描述 7

3.TCP通信程序的核心算法 7

4.UDP通信程序源代码 8

5.UDP通信程序数据结构的描述 11

6.UDP通信程序的核心算法 12

实验数据、结果分析 13

TCP通信程序实验结果分析 13

UDP通信程序实验结果分析 14

总结 16

实验目的和内容

实验目的

掌握win32平台下,使用winsockAPI来实现UDP通信程序和TCP通信程序。

实验内容

1.实现控制台模式下,在单机上基于UDP的聊天程序;

2.实现控制台模式下,在单机上基于TCP的聊天程序;

3.上述两个程序,最简单的实现方式是:

一方发送、另一方接收、交替进行;

4.提交上述2个程序的源程序,程序代码有充分的注释,并填写实验报告,实验报告的主要内容为说明程序设计的思路,程序代码的流程。

实验环境

在win7系统下,visualstudio2008环境下的win32平台下

程序的逻辑框图

程序源代码(数据结构的描述、核心算法)

1.TCP通信程序源代码

Client端:

#include"

stdafx.h"

#include<

stdlib.h>

stdio.h>

string.h>

winsock.h>

//初始化函数,初始化版本号

intInitSock(BYTEminorVer=2,BYTEmajorVer=2)

{

WSADATAwsaData;

WORDsockVersion=MAKEWORD(minorVer,majorVer);

if(WSAStartup(sockVersion,&

wsaData)!

=0)

exit(0);

return1;

}

intmain()

charrbuf[256];

charszText[256];

InitSock();

//创建socket,第一个参数表示用IP协议,第二个参数表示用TCP传输,第三个不大清楚

SOCKETsListen=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

//判断socket是否创建成功

if(sListen==INVALID_SOCKET)

{

printf("

Failedsocket()\n"

);

return0;

}

//用于存储IP地址和端口号的变量

sockaddr_insin;

sin.sin_family=AF_INET;

//IP协议

sin.sin_port=htons(4567);

//端口号

sin.sin_addr.S_un.S_addr=INADDR_ANY;

//接收任何IP的连接

//绑定函数,将socket与IP地址和端口绑定在一块

if(bind(sListen,(LPSOCKADDR)&

sin,sizeof(sin))==SOCKET_ERROR)

Failedbind()\n"

//开始监听,第二个参数表示最大连接数

if(listen(sListen,2)==SOCKET_ERROR)

Failedlisten()\n"

//定义一个新的变量

sockaddr_inremoteAddr;

intnAddrLen=sizeof(remoteAddr);

//用于存储连接客户端的socket

SOCKETsClient;

//accept函数会阻塞,直到等到有socket连接服务器为止,才继续往后执行,并将客户端的IP和端口号存在remoteAddr中

sClient=accept(sListen,(SOCKADDR*)&

remoteAddr,&

nAddrLen);

printf("

接收到一个连接%s\r\n"

inet_ntoa(remoteAddr.sin_addr));

while(TRUE)

if(sClient==INVALID_SOCKET)

{

printf("

Failedaccept()"

continue;

}

send:

"

scanf("

%s"

szText);

//发送函数,往sClient这个socket中发送szText

send(sClient,szText,strlen(szText),0);

//recv为阻塞函数,等待sClient中传来数据

intnRecv=recv(sClient,rbuf,256,0);

if(nRecv>

0)

rbuf[nRecv]='

\0'

;

receive:

%s\n"

rbuf);

closesocket(sClient);

closesocket(sListen);

WSACleanup();

return0;

Server端:

exit(0);

SOCKETs=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(s==INVALID_SOCKET)

Failedsocket()\n"

sockaddr_inservAddr;

servAddr.sin_family=AF_INET;

servAddr.sin_port=htons(4567);

//要连接的端口号

servAddr.sin_addr.S_un.S_addr=inet_addr("

127.0.0.1"

//要连接的IP地址

//连接函数,是一个阻塞类型的函数,用s这个socket与服务器地址的某个端口连接,之后往s这个socket中写数据,服务器就能收到

if(connect(s,(sockaddr*)&

servAddr,sizeof(servAddr))==-1)

Failedconnect()\n"

charbuff[256];

while(true){

//接收函数,是一个阻塞类型的函数,等待s这个socket中传来数据,256表示接收的最大字符数

intnRecv=recv(s,buff,256,0);

if(nRecv>

0)

buff[nRecv]='

buff);

//发送函数,往s这个socket中发送szText这个字符串

send(s,szText,strlen(szText),0);

closesocket(s);

2.TCP通信程序数据结构的描述

(1)客户端及服务器都含有存储IP地址及端口号的数据结构,sockaddr_inremoteAddr;

和servAddr

(2)用于存储连接客户端的socket:

SOCKETsClient;

和用于存储连接服务器的socket:

SOCKETs

3.TCP通信程序的核心算法

服务器首先启动,通过调用socket()建立一个套接口,然后bind()将该套接口和本地地址(IP地址和端口)联系在一起,再listen()使套接口做好侦听的准备,并规定它的请求队列的长度,之后就调用accept()来接收连接,并获得客户机的地址信息;

客户在建立套接口后就可调用connect()和服务器建立连接;

连接一旦建立,客户机和服务器之间就可以通过调用:

send()和recv()(或read()和write())来发送和接收数据;

最后,待数据传送结束后,双方调用closesocket()关闭套接口。

4.UDP通信程序源代码

//在同一主机的不同端口上分别运行服务器程序和客户端程序

WORDRPort=6666;

//远程端口RemotePort

charRIP[16]="

//远程IP地址RemoteIPAddr

WORDLPort=7777;

//本地端口LocalPort

charLIP[16]="

//本地IP地址LocalIPAddr

SOCKETS;

//套接口SOCKET

structsockaddr_inrAddr;

//远程参数,remoteAddr

structsockaddr_inlAddr;

//本地参数,localAddr

WSADATAWD;

//WinsockDLL信息

intr;

//result;

//-----------------------------------------------

vo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1