首页 > 期刊论文知识库 > 网络聊天系统毕业论文

网络聊天系统毕业论文

发布时间:

网络聊天系统毕业论文

现在论文审核比较严格了。你最好改下管理信息系统论文管理信息系统简介管理信息系统是一个由人和计算机等组成的能够提供信息以支持一个组织机构内部的作业、管理、分析和决策职能的系统。管理信息系统利用计算机的硬件和软件,手工规程、分析、计划、控制和决策用的模型,以及数据库对信息进行收集、传输、加工、保存、维护和使用。因此管理信息系统是一个信息处理系统。管理信息系统作为各项业务、技术、工作自动化及高水平管理的方法和模式,正在得到越来越广泛的应用。早期的管理信息系统通常是以各单位为主体,独自进行开发和应用。从技术上看,大体是以局域网或客户/服务器模式组成应用系统平台,在操作系统和数据库管理系统的平台上开发应用软件系统。但是,由于技术的发展和进步以及应用、管理和数据共享的需要等诸多原因,把分散开发且分布在各个地域的独立的管理信息系统互相连接起来,实现系统硬件、系统软件、应用软件及数据的共享,已经成为越来越迫切的任务。管理信息系统研究的意义当今社会是一个信息社会,信息已成为继劳动力、土地、资本之后的又一大资源。谁控制的信息越多,谁利用信息资源的效率越高,谁就会在各方面的竞争中占有一席之地,谁就会有更多的优势。贸易管理信息系统是一个贸易公司不可缺少的部分,它的内容对于公司的决策者和管理者来说都至关重要,所以贸易管理系统应该能够为用户提供充足的信息和快捷的查询手段。但目前还有一些小型企业使用传统人工的方式管理,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用,计算机业飞速发展,技术淘汰指标高得惊人,价格下降以及软件应用的快速扩展引发了以信息处理计算机化为标志的“微机革命”。 微型计算机的出现和普及,为信息处理提供了物美价廉的手段,对于推动我国管理信息处理现代化起到了重要作用。使用计算机对贸易信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高贸易信息管理的效率,也是企业的科学化、正规化管理及与世界接轨的重要条件。国外现状计算机的发明应用,被视为人类的第三次重大的科学技术革命,是一次飞跃。过去的革命最高成就就是“用机器制造机器”,是手的延长,而计算机的出现却能做到“用机器控制机器”,是脑的延伸。计算机是提高生产效率的主要工具及途径在西方国家,计算机系统的发展有以下四个阶段:第一阶段(1953--1960)电子数据处理阶段(EDP)。 此阶段以单项数据处理为主,如财务管理、物资管理、工资管理等。第二阶段(1961--1970)管理信息系统阶段(MIS)。在这期间,由于高速度的处理机、高速度大容量的存储器与器件有了突破性进展,使得计算机应用系统从单项应用的EDP发展到多功能、多层次、综合性的应用阶段,使得MIS日渐成熟,具有了控制、预测、辅助和决策的功能。第三阶段(1970--1980)决策支持系统阶段(DSS)。在此阶段解决的主要是面向高层管理,大范围的决策问题以及非结构化信息的处理。第四阶段(1980--)职能管理系统阶段(IMS),这个阶段强调的是综合管理功能,多维服务模式,人机协调的、智能化的、集成化的计算机辅助管理功能等。据统计,目前,美国在财务会计上占有90%以上的工作由计算机完成;物资管理中80-100%的信息处理由计算机完成;计划管理是90%左右;在计算机应用发展较快的国家中,计算机应用于经济管理的占80%以上;用于科技计算的占8%以上,用于生产过程控制的占12%以上;由此可以看出,经济管理是计算机应用的主要领域。国内现状由于种种原因,我国的信息资源建设水平远远落后于信息基础设施的建设的水平。长期以来,我国信息资源的开发管理未能与信息资源的增长同步进行。我国有丰富的原始信息资源,但在此基础上再生的二次信息系统和数据库产业的规模和市场占有率、使用率相当低,大量的有价值的信息未能进一步加工成商品使其增值。我国的计算机应用要比西方国家落后十几年,管理信息系统的开发应用是从1973年开始的,83年以后才开始了大量的实际的开发和研究工作。因此,信息资源的开发和利用已被确立为国民经济信息的核心内容,信息数字化,传输的网络化是缩小发展中国家与发达国家差距的捷径,值世界信息化浪潮正以不可阻挡之势席卷全球时,我国要迎头赶上,就必须利用现有的信息基础设施,重点开发和推广应用于各类科技经济等数据库和网络资源服务系统,以便取得巨大的社会效益和经济效益。现在中国企业已进入“新管理时代”。经过20年的改革开放,中国企业发展的宏观环境和管理模式都发生了根本性的改变。企业管理在经历了计划经济时期的“生产管理”时代,计划经济与市场经济相结合时期的“混合管理”时代后,从九十年代末进入全面市场经济时期的“新管理”时代。新管理时的中国企业管理是面向市场、基于现代企业制度,是中国模式、价值化、系统化、电脑化、国际化和普遍化管理的时代。 新管理时代的中国企业管理以建立竞争优势,提高企业竞争力为核心。要提高企业的竞争力就必须整合企业经营,全面强化企业管理,形成企业持久发展的“内功”。越来越多的质优企业舍得在管理系统上投资的举动,足以说明这一趋势。在市场竞争日益激烈,用户需求不断趋向多样化,企业间关联程度越来越密切的今天,要求企业行动必须快捷、灵敏,在管理的思想观念、方式方法上不断创新。人力已经很难完全达到要求,必须借助当代信息科技的最新成果,优化和加强企业的运营和管理。管理信息系统的应用是一种趋势,必将在不久的将来发挥出巨大的作用,推动生产力的继续发展!

“对图中的那些函数,我这里稍加解释一下。”

int  WSAStartup(WORD wVersionRequested, LPWSADATA  lpWSAData);

功能是初始化Windows Socket Dll,在Windows下必须使用它。

参数:

“wVersionRequested”表示版本,可以是、等;

“lpWSAData”指向WSADATA数据结构的指针。

int socket(int family, int type, int protocol);

功能是建立Socket,返回以后会用到的Socket值。如果错误,返回-1。

参数:

“int family”参数指定所要使用的通信协议,取以下几个值:AF_UNIX(Unix内部协议)、AF_INET(Internet协议)、AF_NS Xerox(NS协议)、AF_IMPLINK(IMP连接层),在Windows下只能把“AF”设为“AF_INET”;

“int type”参数指定套接字的类型,取以下几个值:SOCK_STREAM(流套接字)、SOCK_DGRAM (数据报套接字)、SOCK_RAW(未加工套接字)、SOCK_SEQPACKET(顺序包套接字);

“int protocol”参数通常设置为0。

int bind(int sockfd, struct sockaddr *my_addr, int addrlen);

功能是把套接字和机器上一定的端口关联起来。

参数:

“sockfd”是调用socket()返回的套接字值;

“my_addr”是指向数据结构struct sockaddr的指针,它保存你的地址,即端口和IP地址信息;

“addrlen”设置为sizeof(struct sockaddr)。

int listen(int sockfd, int backlog);

功能是服务端监听一个端口,直到accept()。在发生错误时返回-1。

参数:

“sockfd”是调用socket()返回的套接字值;

“backlog”是允许的连接数目。大多数系统的允许数目是20,也可以设置为5到10。

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

功能是客户端连接服务端监听的端口。

参数:

“sockfd”是调用socket()返回的套接字值;

“serv_addr”保存着目的地端口和IP 地址的数据结构struct sockaddr;

“addrlen”设置为sizeof(struct sockaddr)。

int accept(int sockfd, void *addr, int *addrlen);

功能是服务端接受客户端的连接请求,并返回一个新的套接字,以后服务端的数据传输就使用这个新的套接字。如果有错误,返回-1。

参数:

“sockfd”是和listen()中一样的套接字值;

“addr”是个指向局部的数据结构sockaddr_in的指针;

“addrlen”设置为sizeof(struct sockaddr_in)。

int send(int sockfd, const void *msg, int len, int flags);

int recv(int sockfd, void *buf, int len, unsigned int flags);

功能是用于流式套接字或数据报套接字的通讯,我们数据的真正传输就由它们完成。

参数:

“sockfd”是发/收数据的套接字值;

“msg”指向你想发送的数据的指针;

“buf”是指向接收数据存放的地址;

“len”是数据的长度;

“flags”设置为 0。

int sendto(int sockfd, const void *msg, int len, unsigned int flags,const struct sockaddr *to, int tolen);

int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen);

功能和send、recv类似,不过是用于无连接数据报套接字的传输。

int closesocket(int sockfd)

功能是关闭套接字。

参数“sockfd”为要关闭的套接字值。

程序:

“这里的目的是让大家对Socket编程有个整体了解。不用怕,程序我会详细解释的,首先是服务端的程序。其流程是:

socket()→bind()→listen→accept()→recv()/send()→closesocket()

具体代码如下:”

#include <>

#include <>

#pragma comment(lib,"Ws2_32")

#define MYPORT 830  /*定义用户连接端口*/

#define BACKLOG 10  /*多少等待连接控制*/

int main()

{

int sockfd, new_fd;                                  /*定义套接字*/

struct sockaddr_in my_addr;          /*本地地址信息 */

struct sockaddr_in their_addr;        /*连接者地址信息*/

int sin_size;

WSADATA ws;

WSAStartup(MAKEWORD(2,2),&ws);           //初始化Windows Socket Dll

//建立socket

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

//如果建立socket失败,退出程序

printf("socket error\n");

exit(1);

}

//bind本机的MYPORT端口

 = AF_INET;                     /* 协议类型是INET  */

 = htons(MYPORT);            /* 绑定MYPORT端口*/

 = INADDR_ANY;   /* 本机IP*/

if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)

{

//bind失败,退出程序

printf("bind error\n");

closesocket(sockfd);

exit(1);

}

//listen,监听端口

if (listen(sockfd, BACKLOG) == -1)

{

//listen失败,退出程序

printf("listen error\n");

closesocket(sockfd);

exit(1);

}

printf("listen...");

//等待客户端连接

sin_size = sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)

{

printf("accept error\n");

closesocket(sockfd);

exit(1);

}

printf("\naccept!\n");

//有连接,发送ww0830字符串过去

if (send(new_fd, "ww0830\n", 14, 0) == -1)

{

printf("send error");

closesocket(sockfd);

closesocket(new_fd);

exit(1);

}

printf("send ok!\n");

//成功,关闭套接字

closesocket(sockfd);

closesocket(new_fd);

return 0;

}

对服务端程序的流程概括:

先是初始化Windows Socket Dll: WSAStartup(MAKEWORD(2,2),&ws);

然后建立Socket: sockfd = socket(AF_INET, SOCK_STREAM, 0)

再bind本机的MYPORT端口:

 = AF_INET;         /* 协议类型是INET   */

 = htons(MYPORT);       /* 绑定MYPORT端口  */

 = INADDR_ANY;   /* 本机IP           */

bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))

接下来监听端口: listen(sockfd, BACKLOG)

如果有客户端的连接请求,接收它: new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)

最后发送ww0830字符串过去: send(new_fd, "ww0830\n", 14, 0)

收尾工作,关闭socket: closesocket(sockfd);    closesocket(new_fd);  ”

编译、执行,就会一直监听830端口

客户端程序了。其流程是:

socket()→connect()→send()/recv()→closesocket()

比服务端更简单吧!其实现代码如下:”

#include <>

#include <>

#include <>

#pragma comment(lib,"Ws2_32")

#define PORT 830                            /* 客户机连接远程主机的端口 */

#define MAXDATASIZE 100                     /* 每次可以接收的最大字节 */

int main(int argc, char *argv[])

{

int sockfd, numbytes;

char buf[MAXDATASIZE];

struct sockaddr_in their_addr;        /* 对方的地址端口信息 */

if (argc != 2)

{

//需要有服务端ip参数

fprintf(stderr,"usage: client hostname\n");

exit(1);

}

WSADATA ws;

WSAStartup(MAKEWORD(2,2),&ws);         //初始化Windows Socket Dll

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

//如果建立socket失败,退出程序

printf("socket error\n");

exit(1);

}

//连接对方

 = AF_INET;                         /* 协议类型是INET  */

 = htons(PORT);                       /* 连接对方PORT端口 */

 = inet_addr(argv[1]);        /* 连接对方的IP */

if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1)

{

//如果连接失败,退出程序

printf("connet error\n");

closesocket(sockfd);

exit(1);

}

//接收数据,并打印出来

if ((numbytes=recv(sockfd, buf, MAXDATASIZE, 0)) == -1)

{

//接收数据失败,退出程序

printf("recv error\n");

closesocket(sockfd);

exit(1);

}

buf[numbytes] = '\0';

printf("Received: %s",buf);

closesocket(sockfd);

return 0;

}

对客户端程序的流程概括:

首先是初始化Windows Socket Dll: WSAStartup(MAKEWORD(2,2),&ws);

然后建立Socket: sockfd = socket(AF_INET, SOCK_STREAM, 0)

接着连接服务器方:

 = AF_INET;                                 /* 协议类型是INET    */

 = htons(PORT);                           /* 连接对方PORT端口      */

 = inet_addr(argv[1]);         /* 连接对方的IP  */

connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr))

连接成功就接收数据: recv(sockfd, buf, MAXDATASIZE, 0)

最后把收到的数据打印出来并关闭套接字:

printf("Received: %s",buf);      closesocket(sockfd);

编译结束后,运行服务端,然后。客户端 服务端IP  回车

你会看到服务端发来得数据。

那么基本的点对点通信就没问题了。只要两台机器同时包含服务端和客户端,就可以互相通信了。

当然,你也可以将服务端和客户端分开做,专门一个服务器负责用户登录和转发消息。

流程如下:

A客户端发登录消息-----》服务器

服务器验证发送用户消息----》客户端

A客户端想发消息给B客户端----》先发给服务端

服务器得到消息查询B客户端IP并转发消息。(或者B客户端循环发消息询问服务器有无消息)

通信结束。

大量事实证明,确保网络安全已经是一件刻不容缓的大事,网络安全的 毕业 论文选题确立也是一件至关重要的事情。下面是我带来的关于网络安全毕业论文选题的内容,欢迎阅读参考! 网络安全毕业论文选题(一) 1. 教学网页的设计与应用 2. 教学互动网站的设计与实现 3. 个人网站的设计与实现 4. 电子商务网站的设计与实现 5. 基于ASP的动态网站设计与实现 6. 论网上商店的设计 方法 7. 留言板设计与实现 8. 企业公司网站的设计与实现 9. Flash动画设计及制作 10. 基于flash的聊天室的设计 11. 基于FLASH的多媒体课件设计与开发 12. 多媒体课件开发研究 13. 基于ASP学院图书管理系统 14. 图书综合管理系统设计与实现 15. 计算机病毒解析与防范 16. 计算机安全技术应用 17. 管理信息系统设计与实现 18. 信息安全技术及其应用 19. 信息系统分析与设计 网络安全毕业论文选题(二) 1、局域网的组建方法 2、图书管理系统的设计 3、计算机网络安全及防火墙技术 4、校园网站设计 4、数据库语言编写学生学籍管理 5、个人 电脑安全 意识如何提高 6、浅析计算机病毒及防范的 措施 7、浅谈计算机网络安全漏洞及防范措施 8、二十一世纪的计算机硬件技术 9、计算机最新技术发展趋势 10、计算机病毒的研究与防治 11、论述磁盘工作原理以及相关调度算法 12、高校计算机机房管理的维护和探索 13、C语言教学系统设计 14、浅谈子网掩码与子网划分 15、微机黑屏故障与防治研究 16、虚拟局域网的组建与应用 17、学校图书管理系统的设计 18、计算机网络安全管理 网络安全毕业论文选题(三) 1. 病毒入侵微机的途径与防治研究 2. 微机黑屏故障与防治研究 3. NAT技术在局域网中的应用 4. 基于Socket的网络聊天系统开发与设计 5. 计算机网络故障的一般识别与解决方法 6. 访问控制列表ACL在校园网中的应用初探 7. 常用动态路由协议安全性分析及应用 8. 数字证书在网络安全中的应用 9. 计算机病毒的攻与防 10. ARP欺在网络中的应用及防范 11. TCP安全问题浅析 12. 网络入侵手段与网络入侵技术 13. 技术在局域网中的应用 14. IDS技术在网络安全中的应用 15. Dos与DDos攻击与防范措施 16. DHCP安全问题及其防范措施 17. 校园网规划及相关技术 18. 企业网组建及相关技术 19. 网吧组建及相关技术 20. 无线网现状及相关技术 猜你喜欢: 1. 网络工程毕业论文题目 2. 最新版网络工程专业毕业论文题目 3. 网络安全论文参考文献 4. 网络安全征文2000字 5. 网络安全与管理毕业论文最新范文

聊天系统的毕业论文

“对图中的那些函数,我这里稍加解释一下。”

int  WSAStartup(WORD wVersionRequested, LPWSADATA  lpWSAData);

功能是初始化Windows Socket Dll,在Windows下必须使用它。

参数:

“wVersionRequested”表示版本,可以是、等;

“lpWSAData”指向WSADATA数据结构的指针。

int socket(int family, int type, int protocol);

功能是建立Socket,返回以后会用到的Socket值。如果错误,返回-1。

参数:

“int family”参数指定所要使用的通信协议,取以下几个值:AF_UNIX(Unix内部协议)、AF_INET(Internet协议)、AF_NS Xerox(NS协议)、AF_IMPLINK(IMP连接层),在Windows下只能把“AF”设为“AF_INET”;

“int type”参数指定套接字的类型,取以下几个值:SOCK_STREAM(流套接字)、SOCK_DGRAM (数据报套接字)、SOCK_RAW(未加工套接字)、SOCK_SEQPACKET(顺序包套接字);

“int protocol”参数通常设置为0。

int bind(int sockfd, struct sockaddr *my_addr, int addrlen);

功能是把套接字和机器上一定的端口关联起来。

参数:

“sockfd”是调用socket()返回的套接字值;

“my_addr”是指向数据结构struct sockaddr的指针,它保存你的地址,即端口和IP地址信息;

“addrlen”设置为sizeof(struct sockaddr)。

int listen(int sockfd, int backlog);

功能是服务端监听一个端口,直到accept()。在发生错误时返回-1。

参数:

“sockfd”是调用socket()返回的套接字值;

“backlog”是允许的连接数目。大多数系统的允许数目是20,也可以设置为5到10。

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

功能是客户端连接服务端监听的端口。

参数:

“sockfd”是调用socket()返回的套接字值;

“serv_addr”保存着目的地端口和IP 地址的数据结构struct sockaddr;

“addrlen”设置为sizeof(struct sockaddr)。

int accept(int sockfd, void *addr, int *addrlen);

功能是服务端接受客户端的连接请求,并返回一个新的套接字,以后服务端的数据传输就使用这个新的套接字。如果有错误,返回-1。

参数:

“sockfd”是和listen()中一样的套接字值;

“addr”是个指向局部的数据结构sockaddr_in的指针;

“addrlen”设置为sizeof(struct sockaddr_in)。

int send(int sockfd, const void *msg, int len, int flags);

int recv(int sockfd, void *buf, int len, unsigned int flags);

功能是用于流式套接字或数据报套接字的通讯,我们数据的真正传输就由它们完成。

参数:

“sockfd”是发/收数据的套接字值;

“msg”指向你想发送的数据的指针;

“buf”是指向接收数据存放的地址;

“len”是数据的长度;

“flags”设置为 0。

int sendto(int sockfd, const void *msg, int len, unsigned int flags,const struct sockaddr *to, int tolen);

int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen);

功能和send、recv类似,不过是用于无连接数据报套接字的传输。

int closesocket(int sockfd)

功能是关闭套接字。

参数“sockfd”为要关闭的套接字值。

程序:

“这里的目的是让大家对Socket编程有个整体了解。不用怕,程序我会详细解释的,首先是服务端的程序。其流程是:

socket()→bind()→listen→accept()→recv()/send()→closesocket()

具体代码如下:”

#include <>

#include <>

#pragma comment(lib,"Ws2_32")

#define MYPORT 830  /*定义用户连接端口*/

#define BACKLOG 10  /*多少等待连接控制*/

int main()

{

int sockfd, new_fd;                                  /*定义套接字*/

struct sockaddr_in my_addr;          /*本地地址信息 */

struct sockaddr_in their_addr;        /*连接者地址信息*/

int sin_size;

WSADATA ws;

WSAStartup(MAKEWORD(2,2),&ws);           //初始化Windows Socket Dll

//建立socket

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

//如果建立socket失败,退出程序

printf("socket error\n");

exit(1);

}

//bind本机的MYPORT端口

 = AF_INET;                     /* 协议类型是INET  */

 = htons(MYPORT);            /* 绑定MYPORT端口*/

 = INADDR_ANY;   /* 本机IP*/

if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)

{

//bind失败,退出程序

printf("bind error\n");

closesocket(sockfd);

exit(1);

}

//listen,监听端口

if (listen(sockfd, BACKLOG) == -1)

{

//listen失败,退出程序

printf("listen error\n");

closesocket(sockfd);

exit(1);

}

printf("listen...");

//等待客户端连接

sin_size = sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)

{

printf("accept error\n");

closesocket(sockfd);

exit(1);

}

printf("\naccept!\n");

//有连接,发送ww0830字符串过去

if (send(new_fd, "ww0830\n", 14, 0) == -1)

{

printf("send error");

closesocket(sockfd);

closesocket(new_fd);

exit(1);

}

printf("send ok!\n");

//成功,关闭套接字

closesocket(sockfd);

closesocket(new_fd);

return 0;

}

对服务端程序的流程概括:

先是初始化Windows Socket Dll: WSAStartup(MAKEWORD(2,2),&ws);

然后建立Socket: sockfd = socket(AF_INET, SOCK_STREAM, 0)

再bind本机的MYPORT端口:

 = AF_INET;         /* 协议类型是INET   */

 = htons(MYPORT);       /* 绑定MYPORT端口  */

 = INADDR_ANY;   /* 本机IP           */

bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))

接下来监听端口: listen(sockfd, BACKLOG)

如果有客户端的连接请求,接收它: new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)

最后发送ww0830字符串过去: send(new_fd, "ww0830\n", 14, 0)

收尾工作,关闭socket: closesocket(sockfd);    closesocket(new_fd);  ”

编译、执行,就会一直监听830端口

客户端程序了。其流程是:

socket()→connect()→send()/recv()→closesocket()

比服务端更简单吧!其实现代码如下:”

#include <>

#include <>

#include <>

#pragma comment(lib,"Ws2_32")

#define PORT 830                            /* 客户机连接远程主机的端口 */

#define MAXDATASIZE 100                     /* 每次可以接收的最大字节 */

int main(int argc, char *argv[])

{

int sockfd, numbytes;

char buf[MAXDATASIZE];

struct sockaddr_in their_addr;        /* 对方的地址端口信息 */

if (argc != 2)

{

//需要有服务端ip参数

fprintf(stderr,"usage: client hostname\n");

exit(1);

}

WSADATA ws;

WSAStartup(MAKEWORD(2,2),&ws);         //初始化Windows Socket Dll

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

//如果建立socket失败,退出程序

printf("socket error\n");

exit(1);

}

//连接对方

 = AF_INET;                         /* 协议类型是INET  */

 = htons(PORT);                       /* 连接对方PORT端口 */

 = inet_addr(argv[1]);        /* 连接对方的IP */

if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1)

{

//如果连接失败,退出程序

printf("connet error\n");

closesocket(sockfd);

exit(1);

}

//接收数据,并打印出来

if ((numbytes=recv(sockfd, buf, MAXDATASIZE, 0)) == -1)

{

//接收数据失败,退出程序

printf("recv error\n");

closesocket(sockfd);

exit(1);

}

buf[numbytes] = '\0';

printf("Received: %s",buf);

closesocket(sockfd);

return 0;

}

对客户端程序的流程概括:

首先是初始化Windows Socket Dll: WSAStartup(MAKEWORD(2,2),&ws);

然后建立Socket: sockfd = socket(AF_INET, SOCK_STREAM, 0)

接着连接服务器方:

 = AF_INET;                                 /* 协议类型是INET    */

 = htons(PORT);                           /* 连接对方PORT端口      */

 = inet_addr(argv[1]);         /* 连接对方的IP  */

connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr))

连接成功就接收数据: recv(sockfd, buf, MAXDATASIZE, 0)

最后把收到的数据打印出来并关闭套接字:

printf("Received: %s",buf);      closesocket(sockfd);

编译结束后,运行服务端,然后。客户端 服务端IP  回车

你会看到服务端发来得数据。

那么基本的点对点通信就没问题了。只要两台机器同时包含服务端和客户端,就可以互相通信了。

当然,你也可以将服务端和客户端分开做,专门一个服务器负责用户登录和转发消息。

流程如下:

A客户端发登录消息-----》服务器

服务器验证发送用户消息----》客户端

A客户端想发消息给B客户端----》先发给服务端

服务器得到消息查询B客户端IP并转发消息。(或者B客户端循环发消息询问服务器有无消息)

通信结束。

百度搜索 源码之家,很多很多下源码的网站。可以进去选择ASP源码,有ACCESS和SQL两种数据库的网站。可以选择适合的,

一、前言计算机设计之初,只是为了运用于科学研究,因为其非同寻常的运算速度而大大简化了人类的脑力劳动。随着社会的快速发展,计算机已经不再是及其昂贵并且功能单一的纯粹的计算工具。当今的计算机不仅性能越来越好,体积也越来越小,设计的完美伴随的并不是价格的提升,而是越来越大众化。个人电脑是当代社会计算机的主要表现形式。在个人电脑和网络流行的今天,人类的交流方式也越来越丰富,以全球互联网络为载体的网络即时聊天工具软件越来越多的出现,不仅大大节省了信息传递所使用的能源,更体现着人类社会的丰富多彩。本软件的开发,主要是针对小型用户群,能实现基本的即时交流功能,能应用于局域网和互联网,很适合作为学校及企业内部交流工具。 项目开发的主要内容本系统能够在安装有Microsoft Office或其他带有 Microsoft Visual Basic 运行库的Microsoft Windows 98以及更高版本的操作系统环境下运行,设计并实现的功能除了基本的即时聊天,还有文件传输,自定义表情等。 项目开发运用到的主要技术1. 采用Microsoft Access 2000来完成数据库管理平台开发 。2. 采用Microsoft Visual Basic 开发平台来完成系统的前台环境(客户端)开发。3. 采用Winsock来实现客户端和服务器的通讯。二、 数据库与工具简介 基于TCP/IP 协议的C/S 模式体系结构本聊天系统包括客户端和服务器,即采用客户端—服务器架构,客户端发送、接收信息,服务器端在客户端之间转发信息。传输层协议为TCP/IP协议。客户机/服务器(C/S)结果是当前非常流行的数据库系统结构。在这种体系结构中,客户机提出请求,服务器对客户机的服务请求做出回应。每一个服务器都为整个局域网系统提供自己最擅长的服务,让所有客户机来分享;客户机上的应用程序借助于服务器的服务功能实现复杂的应用功能。在C/S结构中,数据库存储层出于服务器上,应用层和数据界面层出于客户机上。在C/S数据库服务器结构中,客户机负责管理用户界面,接收用户数据、处理应用逻辑、生成数据库服务请求,并将服务请求发送给数据库服务器,同时接收数据库服务器返回的结果,最后在将返回的结果按照一定的格式或方式显示给客户机。C/S系统结构使整个系统具有较好的性能。C/S结构的通讯成本也比较低,主要原因在于:(1) 降低了数据传输量,数据库服务器返回给客户机的仅是执行数据操作后的结果数据。(2) 由于许多应用逻辑处理由客户机来完成,因而减少了许多的不必要的与服务器的通信开销。TCP/IP协议的特点:Internet上的TCP/IP协议之所以能够得到迅速发展,不仅因为它是美国军方指定使用的通信协议,更重要的是它恰恰适应了世界范围内的数据通信的需要。TCP/IP协议主要有以下几个特点:开放的协议标准,可以免费使用,并且独立与特定的计算机硬件与操作系统;独立与特定的网络硬件,可以运行在局域网、广域网,更适用与互联网中;统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有唯一的地址;标准化的高层协议,可以提供多种可靠的用户服务。TCP协议的特点是:提供面向连接的、可靠的、全双工通信;支持数据流的传输;传输连接的可靠建立与释放;提供流量控制与拥塞控制。 Microsoft Access 2000简介关于数据库的建立,我们选择了Microsoft Access 2000作为工具,因为和商业化的SQL server相比,虽然Access在安全性和处理并发能力等方面略逊一筹,但是Access的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。微软公司通过大量地改进,将Access的新版本功能变得比最初版本强大许多。不管是处理公司的客户订单数据;管理自己的个人通讯录;还是大量科研数据的记录和处理,人们都可以利用它来解决大量数据的管理工作。Access的组成部分:表表是Access应用程序的人机交互界面,基本上是所建数据库中的表加上各种可视化的组件元素。查询查询的本质就是SQL的数据操纵语句,利用查询可以通过不同的方法来查看更改和分析数据,对表、记录、字段的多数据操作都可通过查询来完成。报表报表对象实际上就是一些制定好的特殊查询,不过这是只具有一个查询结果的显示界面,便于打印分析。宏宏是指一个或多个操作的集合,其中每个操作实现特定的功能。宏可以使某些普通的任务自动完成。模块模块就是数据库程序中的程序文件和过程文件。每一个模块可以包含一个或多个子程序、函数或属性。Access数据库窗口子数据表用户可以使用表、查询窗体和子窗体数据表来查看子数据表。子数据表可以绑定表、查询或窗体。数据访问页数据访问页是一个Web页,可以用来添加、编辑、查看或处理Microsoft Access数据库或SQL Server数据库中的当前数据。 编程工具Visual Basic 简介本系统的编程工具使用Visual Basic 。Visual Basic 是美国微软公司开发的一个面向对象的可视化编程工具,经过多次换代后,它已经成为一个全新的成熟的高端产品。“Visual”意为“可视化的”,指的是一种开发图形用户界面的方法,所以Visual Basic是基于Basic的可视化的程序设计语言。在Visual Basic中,一方面继承了Basic所具有的程序设计语言简单易用的特点,另一方面在其编程系统中采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视化程序设计方法。Visual Basic 是一种可视化的编程语言,利用这种可视化技术进行编程,能使编程工作变得轻松、快捷,摆脱了面向过程语言的虚度细节,而将主要精力其中在解决实际问题和设计友好界面上。同时,VB在数据库开发方面能读取和访问Access、Excel、FoxPro和ODBC等多种数据库,并能够利用VB自身所带的数据库引擎创建Access数据库,所以VB在管理信息系统(MIS)的开发和建设方面得到了广泛的应用。包括三个版本:学习版、专业版、企业版是在相同的基础上建立起来的,以满足不同层次的用户需要。三、总体设计 引言 目的本总体设计说明是根据编写网络即时聊天系统的前期需求编写的。涉及客户端登录,即时聊天,文件传输,资料修改,好友添加删除,服务端数据库建立,登录信息监控,BUG报错等方面的总体设计思想。在和同组同学们的共同研究讨论下,我们完成了对网络即时聊天系统总体设计。 专业词定义数据流图DFD(Data Flow Diagram): 数据流程图描述管理信息系统如何操作和处理各种数据。反映系统的动态特征。表达了系统分析人员对现有系统的认识,对目标系统的认识和对目标系统的设想。是系统的功能模型,通过流程建模,把系统的功能进行详细分析,从而使系统分析员可以更好的地与用户交流。数据流程图表达了数据和处理过程的关系,描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。因为数据流程图是逻辑系统的图形表示,即使不是专业的技术人员也容易理解,所以是极好的通信工具。此外,设计数据流程图只考虑系统必须完成的基本逻辑功能,完全不考虑如何具体的实现这些功能,所以它是软件设计很好的出发点。数据流程图由四种基本符号组成:(1)正方形(或立方体)代表数据的源点或终点(2)圆脚矩形(或圆形)代表变换数据的处理(3)开口矩形(或两条平行线)代表数据存储(4)箭头代表数据流,即特定的数据的流动方向.字典DD(Data Dictionary):是关于数据的信息的集合,也就是对数据流图中所包含的元素的定义的集合。数据字典由四类元素定义组成:数据流 、数据项 、数据存储、数据处理。数据流是数据结构在系统内传输的路径。数据项是不可再分割的数据单位数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。处理过程的具体处理逻辑一般用判定表或判定树来描述。数据结构反映了数据之间的组合关系。一个数据结构可由若干个数据项组成也可由若干个数据结构组成,或由若干个数据项和数据结构组成。六、总结在这个软件设计的最初,我们即按照老师的要求一步一步往下做,努力作好需求分析。因为在软件的开发过程中需求分析是十分重要的。在初步了解的基础上,我们根据老师给予的关于即时聊天系统设计思路的讲解,对系统进行了详细的需求分析。这样就使我们对于网络即时聊天系统的开发有了一个大致的思路。在最初的几个星期里,我们一直在做完善需求分析的重复工作。这样就为下一步的设计打下了坚实的基础。到了数据库设计阶段,首先选择了ACCESS 2000作为数据库管理系统。因为我们需要的数据库并不是十分复杂,经过一段时间的共同努力,我们的数据库建立成功了。下一阶段就到了编程阶段了,在这个阶段我们首先考虑的是界面,一个界面设计的好坏直接关系到使用者的方便程度,于是老师提出的要求就是实用。在实用的基础上尽量美观大方。我们经过反复的改正后,界面固定下来。然后就进入编写程序阶段了,在编程过程中,我们借鉴了很多资料,同时也请教了其他有经验的同学。在可以实现同一功能的多个控件中经过仔细研究,确定了最优的控件。这样在老师的要求和帮助下,我们的界面逐渐的得以完善并最终确定下来,到了真正编写代码的时候,我们在需求分析做的努力逐渐显示出来,因为在这个过程中,我们几乎没有遇到什么十分棘手的问题,各项功能也随之增加。在经过和老师的交流讨论之后,我们的设计也逐渐进入了尾声。这样,我们的设计就基本上完成了。在接下来的时间里,我们继续对我们的设计进行优化,包括界面的美观,以及程序的设计。在严格的测试后,逐渐使网络即时聊天系统不再出现大的错误,能够很稳定的运行。

毕业论文之网络聊天

大量事实证明,确保网络安全已经是一件刻不容缓的大事,网络安全的 毕业 论文选题确立也是一件至关重要的事情。下面是我带来的关于网络安全毕业论文选题的内容,欢迎阅读参考! 网络安全毕业论文选题(一) 1. 教学网页的设计与应用 2. 教学互动网站的设计与实现 3. 个人网站的设计与实现 4. 电子商务网站的设计与实现 5. 基于ASP的动态网站设计与实现 6. 论网上商店的设计 方法 7. 留言板设计与实现 8. 企业公司网站的设计与实现 9. Flash动画设计及制作 10. 基于flash的聊天室的设计 11. 基于FLASH的多媒体课件设计与开发 12. 多媒体课件开发研究 13. 基于ASP学院图书管理系统 14. 图书综合管理系统设计与实现 15. 计算机病毒解析与防范 16. 计算机安全技术应用 17. 管理信息系统设计与实现 18. 信息安全技术及其应用 19. 信息系统分析与设计 网络安全毕业论文选题(二) 1、局域网的组建方法 2、图书管理系统的设计 3、计算机网络安全及防火墙技术 4、校园网站设计 4、数据库语言编写学生学籍管理 5、个人 电脑安全 意识如何提高 6、浅析计算机病毒及防范的 措施 7、浅谈计算机网络安全漏洞及防范措施 8、二十一世纪的计算机硬件技术 9、计算机最新技术发展趋势 10、计算机病毒的研究与防治 11、论述磁盘工作原理以及相关调度算法 12、高校计算机机房管理的维护和探索 13、C语言教学系统设计 14、浅谈子网掩码与子网划分 15、微机黑屏故障与防治研究 16、虚拟局域网的组建与应用 17、学校图书管理系统的设计 18、计算机网络安全管理 网络安全毕业论文选题(三) 1. 病毒入侵微机的途径与防治研究 2. 微机黑屏故障与防治研究 3. NAT技术在局域网中的应用 4. 基于Socket的网络聊天系统开发与设计 5. 计算机网络故障的一般识别与解决方法 6. 访问控制列表ACL在校园网中的应用初探 7. 常用动态路由协议安全性分析及应用 8. 数字证书在网络安全中的应用 9. 计算机病毒的攻与防 10. ARP欺在网络中的应用及防范 11. TCP安全问题浅析 12. 网络入侵手段与网络入侵技术 13. 技术在局域网中的应用 14. IDS技术在网络安全中的应用 15. Dos与DDos攻击与防范措施 16. DHCP安全问题及其防范措施 17. 校园网规划及相关技术 18. 企业网组建及相关技术 19. 网吧组建及相关技术 20. 无线网现状及相关技术 猜你喜欢: 1. 网络工程毕业论文题目 2. 最新版网络工程专业毕业论文题目 3. 网络安全论文参考文献 4. 网络安全征文2000字 5. 网络安全与管理毕业论文最新范文

论网络对中学生的影响      今天当我们步入网络社会,发现青年与网络之间存在众多的契合点,正是这些契合点使青年对互联网“一网情深”。青年在网络影响下千状百态虽然向社会展示了其众多绚丽之处,也令人倍感惊喜。但不少青年网民的失色表现却无论如何不能给社会增辉,不能让人高枕无忧。      (一)网络的正面影响      1、网络有助于创新青少年思想教育的手段和方法。利用网络进行德育教育工作,教育者可以以网友的身份和青少年在网上“毫无顾忌”地进行真实心态的平等交流,这对于德育工作者摸清、摸准青少年的思想并开展正面引导和全方位沟通提供了新的快捷的方法。此外,由于网络信息的传播具有实时性和交互性的特点,青少年可以同时和多个教育者或教育信息保持快速互动,从而提高思想互动的频率,提高教育效果;由于网络信息具有可下载性、可储存性等延时性特点,可延长教育者和受教育者思想互动的时间,为青少年提供“全天候”的思想引导和教育。还可以网上相约,网下聚会,实现网上德育工作的滋润和补充,从而及时化解矛盾,起到温暖人心,调动积极性,激发创造力的作用。      2、提供了求知学习的新渠道。目前在我国教育资源不能满足需求的情况下,网络提供了求知学习的广阔校园,学习者在任何时间、任何地点都能接受高等教育,学到在校大学生学习的所有课程、修满学分、获得学位。这对于处在应试教育体制下的青少年来说无疑是一种最好的解脱,它不但有利于其身心的健康发展,而且有利于家庭乃至于社会的稳定。      3、开拓青少年全球视野,提高青少年综合素质。上网使青少年的政治视野、知识范畴更加开阔,从而有助于他们全球意识的形成。同样,又可提高青少年综合素质。通过上网,可以培养他们和各式各样的人交流的能力;通过在网上阅览各类有益图书,触类旁通,提高自身文化素养。      (二)网络的负面影响      1、对于青少年“三观”形成构成潜在威胁。青少年很容易在网络上接触到资本主义的宣传论调、文化思想等,思想处于极度矛盾、混乱中,其人生观、价值观极易发生倾斜,从而滋生全盘西化、享乐主义、拜金主义、崇洋媚外等不良思潮。      2、网络改变了青年在工作和生活中的人际关系及生活方式。青少年在网上公开、坦白地发表观点意见,要求平等对话,对青少年工作者的权威性提出挑战,使思想政治工作的效果往往不能达到预期。同时,上网使青少年容易形成一种以自我为中心的生存方式,集体意识淡薄,个人自由主义思潮泛滥。      3、信息垃圾弱化青少年的思想道德意识。有关专家调查,网上信息47%与色情有关,六成左右的青少年在网上无意中接触到黄色信息。还有一些非法组织或个人也在网上发布扰乱政治经济的黑色信息,蛊惑青少年。这种信息垃圾将弱化青少年思想道德意识,污染青少年心灵,误导青少年行为。      4、网络的隐蔽性,导致青少年不道德行为和违法犯罪行为增多。一方面,少数青少年浏览黄色和非法网站,利用虚假身份进行恶意交友、聊天。另一方面网络犯罪增多,例如传播病毒、黑客入侵、通过银行和信用卡盗窃、等。这些犯罪主体以青少年为主,大多数动机单纯,有的甚至是为了“好玩”、“过瘾”和“显示才华”。另外,有关网络的法律制度不健全也给青少年违法犯罪以可乘之机。

“对图中的那些函数,我这里稍加解释一下。”

int  WSAStartup(WORD wVersionRequested, LPWSADATA  lpWSAData);

功能是初始化Windows Socket Dll,在Windows下必须使用它。

参数:

“wVersionRequested”表示版本,可以是、等;

“lpWSAData”指向WSADATA数据结构的指针。

int socket(int family, int type, int protocol);

功能是建立Socket,返回以后会用到的Socket值。如果错误,返回-1。

参数:

“int family”参数指定所要使用的通信协议,取以下几个值:AF_UNIX(Unix内部协议)、AF_INET(Internet协议)、AF_NS Xerox(NS协议)、AF_IMPLINK(IMP连接层),在Windows下只能把“AF”设为“AF_INET”;

“int type”参数指定套接字的类型,取以下几个值:SOCK_STREAM(流套接字)、SOCK_DGRAM (数据报套接字)、SOCK_RAW(未加工套接字)、SOCK_SEQPACKET(顺序包套接字);

“int protocol”参数通常设置为0。

int bind(int sockfd, struct sockaddr *my_addr, int addrlen);

功能是把套接字和机器上一定的端口关联起来。

参数:

“sockfd”是调用socket()返回的套接字值;

“my_addr”是指向数据结构struct sockaddr的指针,它保存你的地址,即端口和IP地址信息;

“addrlen”设置为sizeof(struct sockaddr)。

int listen(int sockfd, int backlog);

功能是服务端监听一个端口,直到accept()。在发生错误时返回-1。

参数:

“sockfd”是调用socket()返回的套接字值;

“backlog”是允许的连接数目。大多数系统的允许数目是20,也可以设置为5到10。

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

功能是客户端连接服务端监听的端口。

参数:

“sockfd”是调用socket()返回的套接字值;

“serv_addr”保存着目的地端口和IP 地址的数据结构struct sockaddr;

“addrlen”设置为sizeof(struct sockaddr)。

int accept(int sockfd, void *addr, int *addrlen);

功能是服务端接受客户端的连接请求,并返回一个新的套接字,以后服务端的数据传输就使用这个新的套接字。如果有错误,返回-1。

参数:

“sockfd”是和listen()中一样的套接字值;

“addr”是个指向局部的数据结构sockaddr_in的指针;

“addrlen”设置为sizeof(struct sockaddr_in)。

int send(int sockfd, const void *msg, int len, int flags);

int recv(int sockfd, void *buf, int len, unsigned int flags);

功能是用于流式套接字或数据报套接字的通讯,我们数据的真正传输就由它们完成。

参数:

“sockfd”是发/收数据的套接字值;

“msg”指向你想发送的数据的指针;

“buf”是指向接收数据存放的地址;

“len”是数据的长度;

“flags”设置为 0。

int sendto(int sockfd, const void *msg, int len, unsigned int flags,const struct sockaddr *to, int tolen);

int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen);

功能和send、recv类似,不过是用于无连接数据报套接字的传输。

int closesocket(int sockfd)

功能是关闭套接字。

参数“sockfd”为要关闭的套接字值。

程序:

“这里的目的是让大家对Socket编程有个整体了解。不用怕,程序我会详细解释的,首先是服务端的程序。其流程是:

socket()→bind()→listen→accept()→recv()/send()→closesocket()

具体代码如下:”

#include <>

#include <>

#pragma comment(lib,"Ws2_32")

#define MYPORT 830  /*定义用户连接端口*/

#define BACKLOG 10  /*多少等待连接控制*/

int main()

{

int sockfd, new_fd;                                  /*定义套接字*/

struct sockaddr_in my_addr;          /*本地地址信息 */

struct sockaddr_in their_addr;        /*连接者地址信息*/

int sin_size;

WSADATA ws;

WSAStartup(MAKEWORD(2,2),&ws);           //初始化Windows Socket Dll

//建立socket

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

//如果建立socket失败,退出程序

printf("socket error\n");

exit(1);

}

//bind本机的MYPORT端口

 = AF_INET;                     /* 协议类型是INET  */

 = htons(MYPORT);            /* 绑定MYPORT端口*/

 = INADDR_ANY;   /* 本机IP*/

if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)

{

//bind失败,退出程序

printf("bind error\n");

closesocket(sockfd);

exit(1);

}

//listen,监听端口

if (listen(sockfd, BACKLOG) == -1)

{

//listen失败,退出程序

printf("listen error\n");

closesocket(sockfd);

exit(1);

}

printf("listen...");

//等待客户端连接

sin_size = sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)

{

printf("accept error\n");

closesocket(sockfd);

exit(1);

}

printf("\naccept!\n");

//有连接,发送ww0830字符串过去

if (send(new_fd, "ww0830\n", 14, 0) == -1)

{

printf("send error");

closesocket(sockfd);

closesocket(new_fd);

exit(1);

}

printf("send ok!\n");

//成功,关闭套接字

closesocket(sockfd);

closesocket(new_fd);

return 0;

}

对服务端程序的流程概括:

先是初始化Windows Socket Dll: WSAStartup(MAKEWORD(2,2),&ws);

然后建立Socket: sockfd = socket(AF_INET, SOCK_STREAM, 0)

再bind本机的MYPORT端口:

 = AF_INET;         /* 协议类型是INET   */

 = htons(MYPORT);       /* 绑定MYPORT端口  */

 = INADDR_ANY;   /* 本机IP           */

bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))

接下来监听端口: listen(sockfd, BACKLOG)

如果有客户端的连接请求,接收它: new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)

最后发送ww0830字符串过去: send(new_fd, "ww0830\n", 14, 0)

收尾工作,关闭socket: closesocket(sockfd);    closesocket(new_fd);  ”

编译、执行,就会一直监听830端口

客户端程序了。其流程是:

socket()→connect()→send()/recv()→closesocket()

比服务端更简单吧!其实现代码如下:”

#include <>

#include <>

#include <>

#pragma comment(lib,"Ws2_32")

#define PORT 830                            /* 客户机连接远程主机的端口 */

#define MAXDATASIZE 100                     /* 每次可以接收的最大字节 */

int main(int argc, char *argv[])

{

int sockfd, numbytes;

char buf[MAXDATASIZE];

struct sockaddr_in their_addr;        /* 对方的地址端口信息 */

if (argc != 2)

{

//需要有服务端ip参数

fprintf(stderr,"usage: client hostname\n");

exit(1);

}

WSADATA ws;

WSAStartup(MAKEWORD(2,2),&ws);         //初始化Windows Socket Dll

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

//如果建立socket失败,退出程序

printf("socket error\n");

exit(1);

}

//连接对方

 = AF_INET;                         /* 协议类型是INET  */

 = htons(PORT);                       /* 连接对方PORT端口 */

 = inet_addr(argv[1]);        /* 连接对方的IP */

if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1)

{

//如果连接失败,退出程序

printf("connet error\n");

closesocket(sockfd);

exit(1);

}

//接收数据,并打印出来

if ((numbytes=recv(sockfd, buf, MAXDATASIZE, 0)) == -1)

{

//接收数据失败,退出程序

printf("recv error\n");

closesocket(sockfd);

exit(1);

}

buf[numbytes] = '\0';

printf("Received: %s",buf);

closesocket(sockfd);

return 0;

}

对客户端程序的流程概括:

首先是初始化Windows Socket Dll: WSAStartup(MAKEWORD(2,2),&ws);

然后建立Socket: sockfd = socket(AF_INET, SOCK_STREAM, 0)

接着连接服务器方:

 = AF_INET;                                 /* 协议类型是INET    */

 = htons(PORT);                           /* 连接对方PORT端口      */

 = inet_addr(argv[1]);         /* 连接对方的IP  */

connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr))

连接成功就接收数据: recv(sockfd, buf, MAXDATASIZE, 0)

最后把收到的数据打印出来并关闭套接字:

printf("Received: %s",buf);      closesocket(sockfd);

编译结束后,运行服务端,然后。客户端 服务端IP  回车

你会看到服务端发来得数据。

那么基本的点对点通信就没问题了。只要两台机器同时包含服务端和客户端,就可以互相通信了。

当然,你也可以将服务端和客户端分开做,专门一个服务器负责用户登录和转发消息。

流程如下:

A客户端发登录消息-----》服务器

服务器验证发送用户消息----》客户端

A客户端想发消息给B客户端----》先发给服务端

服务器得到消息查询B客户端IP并转发消息。(或者B客户端循环发消息询问服务器有无消息)

通信结束。

要我觉得的话,网络对我没影响,不就是现在我有重装系统强迫症,我初一下面来自二级宇宙文明初级人工智能系统程序(字数3046)———————————————————————————————————网络文化对大学生的负面影响及其对策 收费毕业论文 [2010-07-06 03:23] 18 摘要:随着网络的普及和发展,它已经渗透到社会生活的各个领域。网络在给大学生带来积极影响的同时,也不可避免的造成了一些负面效应,并且严重地冲击着大学生的世界观、人生观、价值观和道德观。 关键词:网络文化;大学生;负面影响;对策 网络时代所构建的新的生存方式和生 摘要:随着网络的普及和发展,它已经渗透到社会生活的各个领域。网络在给大学生带来积极影响的同时,也不可避免的造成了一些负面效应,并且严重地冲击着大学生的世界观、人生观、价值观和道德观。 关键词:网络文化;大学生;负面影响;对策 网络时代所构建的新的生存方式和生活方式,广泛而深刻的影响着大学生的思想政治观念、价值取向、道德判断、文化理念等诸多方面。网络文化的兴起与发展,正加速改变着大学生的思想状态,影响着他们的认知、情感和行为。网络文化的负面影响越来越受到社会的普遍关注。因此,我们要充分利用网络资源对网络时代大学生行为的教育和管理提出几点建议,以期达到正确引导的目的,从而使大学生能够健康成长。 一、网络文化对大学生的负面影响 网络是一个开放的世界,网上的信息良莠不齐,特别是在目前网络立法监督还不够完善的情况下,网上反动、色情的信息随处可见。大学生正处在世界观、价值观和人生观形成的关键时期,如果不能给他们提供一个健康积极安全的网络环境,就会很容易导致他们缺乏是非辨别能力、自我控制能力和选择能力,进而使得他们难以抵御网上的各种不良信息的侵蚀,很容易在不知不觉中受到不良影响,网络的不文明现象,甚至网络犯罪也就显现出来了。 一是网络的多元化,使得各种思想、各种价值观都出现在网络之中 网络能够超地域无障碍的交流,它既是信息的集散地,又是信息的垃圾场,各种合法信息与非法信息、有益信息与垃圾信息都混杂其中,从而产生网络“信息污染”现象。在多种观念相互激荡、多种意识形态相互影响、多种文化相互融合的网络时代,大学生网民的思想观念面临着西方意识形态的全面渗透和前所未有的冲击。以美国为首的西方发达国家基本掌握着网络信息的关键技术,网络正在成为灌输西方价值观的一个基本工具。我国作为技术上的“后起国”,在网络信息中,维护教育主权和马克思主义在意识形态领域的指导地位,防止敌对势力对我进行“西化”、“分化”的图谋,其任务是十分紧迫和艰巨的。[1]网络中的垃圾文化的传播会导致大学生价值冲突,使其价值取向多元化,进而大学生的道德意识逐渐弱化。 二是网络的开放性,易忽视现实的规则约束 网络是一个失去了某些强制“他律”因素的自由空间,是一个虚拟社会,在网络环境中缺少社会舆论的监督和现实的规范约束,使“他律”作用下降,容易诱发道德行为的失控。网络世界里没有相同于现实世界的规则约束,它的开放性容易使他们忽视现实生活中的社会规范和道德约束力,违规行为便频频出现了。很多的网络不文明现象在不断增多,有个别大学生网络道德自律性差,在网上匿名肆意泄露并宣扬他人隐私,攻击侮辱他人人格,给他人造成严重的精神伤害,对他人声誉造成不良的影响。网络黑客行为不仅对网络信息和网络安全构成巨大威胁,而且还严重干扰了网络社会的正常秩序,甚至危害到现实社会。 三是网络的虚拟性,影响了大学生的身心健康 网络引发了大学生的虚拟社会交往行为。网络的虚拟性使得相当一部分大学生更愿意选择与网友交往,但是大学生在虚拟世界扩大社会交往范围的同时,在现实世界里又缩小了交往的范围。他们整天坐在电脑前,漫游在网上世界里,与真实社会慢慢脱离,变得日益孤僻,加深了与同学,老师和亲友间的感情隔阂。[2]从而使得他们极力回避现实的人际关系,变得与现实社会相隔离,不利于培养合作意识和团队精神,导致自主创造能力和社会实践能力的逐渐削弱;不少大学生沉溺于虚拟世界、与符号化的对象交往而不能自拔,以致孤独感、抑郁感增强,形成自我封闭的心理,导致心理扭曲,不利于大学生的健康成长。 二、应对网络文化负面影响的措施 当代大学生是时代的弄潮儿,是祖国未来的承载者,作为网络影响最普遍的一个群体,越来越扮演着网络文化先锋的角色。网络文化对大学生思想的影响是多层次、多角度和多方面的。我们必须直面挑战、积极应对、主动介入,采取有效对策控制网络文化对大学生的负面影响,营造良好的网络文化氛围。 第一,加强网络的法律法规和道德规范建设 要加强网络立法,迅速提高司法人员在计算机网络管理与执法方面的能力。到目前为止,我国已颁布的有关网络的法律法规有《中华人民共和国计算机信息网络国际互联网管理暂行办法》、《中国互联网域名注册实施细则》、《计算机信息网络国际互联网安全保护管理办法》。我国有关部门还应该注意借鉴国外网络道德规范建设的经验,结合我国的《公民道德建设实施纲要》的精神,制定出更具科学性、操作性的网络道德规范要求,以便使高校开展大学生网络道德教育有章可依,能正确地引导大学生的网络行为。 第二,加强大学生网络道德教育 加强大学生网络道德教育,要针对大学生网络道德的现状,要施行以辨识为主、辨识与灌输相统一的道德教育方法。[3]把管理和教育结合起来,自律和他律结合起来,使大学生的网络自由与自律、责任与道义相互统一。加强伦理道德教育、法律意识和安全意识教育,树立和宣传良好的网络道德榜样,培养学生健全的人格和高尚的道德情感。使他们能够提高分析辨别能力和“免疫力”,增强政治敏锐性和鉴别力,自觉地防止和抵制网络不良因素的影响。 第三,加强“慎独”教育,培养自律精神 网络社会所要求的道德,是一种以“慎独”为特征的自律性的道德。它强调在个人独处之际,没有任何的外在监督和控制,也能遵从道德规范,恪守道德准则。马克思曾指出:“道德的基础是人类精神的自律。” [4]充分体现出道德自律的重要性。由于网络行为的隐蔽性特征,它对人们的自律性有了更高的要求,要求人们具有更高的道德境界。网络空间又是一个自由、开放的空间,大学生畅游在丰富多彩而又复杂的网络文化中,更需要大学生自觉强化自律精神和责任意识,自觉主动地增强网络道德意识。因此,自主、自律性的道德规范教育就显得更为重要了。 第四,加强自我修养教育 自我修养是道德内化为良心和品质的内在要素。网络信息的开放、快捷、隐秘、广泛、虚拟等特征,使网络信息污染成为不可避免的一个严重问题。作为新时期的大学生,要确立自己远大的人生目标,合理安排作息时间,健全人格,提高个人的交际能力,矫正不良的上网习惯。从自身的层面来说,大学生要加强自我修养教育,提高自我心理调适能力。应培养自己的意志品质,增强自我约束能力,保持健康的情绪,从而增强抵御网络环境负面影响的能力。 参考文献 [1] 何志峰.网络对大学生思想政治教育的影响与对策[J].中国成人教育,2007,(9). [2] 董耘.网络对大学生行为的影响及其对策探究[J].教育与职业,2006,(18). [3] 陈德敏.大学生网络道德问题初探[J].中国成人教育,2007,(4). [4] 马克思,恩格斯.马克思恩格斯选集(第一卷)[M].北京:人民出版社,1995.

聊天系统毕业论文绪论

一、前言计算机设计之初,只是为了运用于科学研究,因为其非同寻常的运算速度而大大简化了人类的脑力劳动。随着社会的快速发展,计算机已经不再是及其昂贵并且功能单一的纯粹的计算工具。当今的计算机不仅性能越来越好,体积也越来越小,设计的完美伴随的并不是价格的提升,而是越来越大众化。个人电脑是当代社会计算机的主要表现形式。在个人电脑和网络流行的今天,人类的交流方式也越来越丰富,以全球互联网络为载体的网络即时聊天工具软件越来越多的出现,不仅大大节省了信息传递所使用的能源,更体现着人类社会的丰富多彩。本软件的开发,主要是针对小型用户群,能实现基本的即时交流功能,能应用于局域网和互联网,很适合作为学校及企业内部交流工具。 项目开发的主要内容本系统能够在安装有Microsoft Office或其他带有 Microsoft Visual Basic 运行库的Microsoft Windows 98以及更高版本的操作系统环境下运行,设计并实现的功能除了基本的即时聊天,还有文件传输,自定义表情等。 项目开发运用到的主要技术1. 采用Microsoft Access 2000来完成数据库管理平台开发 。2. 采用Microsoft Visual Basic 开发平台来完成系统的前台环境(客户端)开发。3. 采用Winsock来实现客户端和服务器的通讯。二、 数据库与工具简介 基于TCP/IP 协议的C/S 模式体系结构本聊天系统包括客户端和服务器,即采用客户端—服务器架构,客户端发送、接收信息,服务器端在客户端之间转发信息。传输层协议为TCP/IP协议。客户机/服务器(C/S)结果是当前非常流行的数据库系统结构。在这种体系结构中,客户机提出请求,服务器对客户机的服务请求做出回应。每一个服务器都为整个局域网系统提供自己最擅长的服务,让所有客户机来分享;客户机上的应用程序借助于服务器的服务功能实现复杂的应用功能。在C/S结构中,数据库存储层出于服务器上,应用层和数据界面层出于客户机上。在C/S数据库服务器结构中,客户机负责管理用户界面,接收用户数据、处理应用逻辑、生成数据库服务请求,并将服务请求发送给数据库服务器,同时接收数据库服务器返回的结果,最后在将返回的结果按照一定的格式或方式显示给客户机。C/S系统结构使整个系统具有较好的性能。C/S结构的通讯成本也比较低,主要原因在于:(1) 降低了数据传输量,数据库服务器返回给客户机的仅是执行数据操作后的结果数据。(2) 由于许多应用逻辑处理由客户机来完成,因而减少了许多的不必要的与服务器的通信开销。TCP/IP协议的特点:Internet上的TCP/IP协议之所以能够得到迅速发展,不仅因为它是美国军方指定使用的通信协议,更重要的是它恰恰适应了世界范围内的数据通信的需要。TCP/IP协议主要有以下几个特点:开放的协议标准,可以免费使用,并且独立与特定的计算机硬件与操作系统;独立与特定的网络硬件,可以运行在局域网、广域网,更适用与互联网中;统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有唯一的地址;标准化的高层协议,可以提供多种可靠的用户服务。TCP协议的特点是:提供面向连接的、可靠的、全双工通信;支持数据流的传输;传输连接的可靠建立与释放;提供流量控制与拥塞控制。 Microsoft Access 2000简介关于数据库的建立,我们选择了Microsoft Access 2000作为工具,因为和商业化的SQL server相比,虽然Access在安全性和处理并发能力等方面略逊一筹,但是Access的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。微软公司通过大量地改进,将Access的新版本功能变得比最初版本强大许多。不管是处理公司的客户订单数据;管理自己的个人通讯录;还是大量科研数据的记录和处理,人们都可以利用它来解决大量数据的管理工作。Access的组成部分:表表是Access应用程序的人机交互界面,基本上是所建数据库中的表加上各种可视化的组件元素。查询查询的本质就是SQL的数据操纵语句,利用查询可以通过不同的方法来查看更改和分析数据,对表、记录、字段的多数据操作都可通过查询来完成。报表报表对象实际上就是一些制定好的特殊查询,不过这是只具有一个查询结果的显示界面,便于打印分析。宏宏是指一个或多个操作的集合,其中每个操作实现特定的功能。宏可以使某些普通的任务自动完成。模块模块就是数据库程序中的程序文件和过程文件。每一个模块可以包含一个或多个子程序、函数或属性。Access数据库窗口子数据表用户可以使用表、查询窗体和子窗体数据表来查看子数据表。子数据表可以绑定表、查询或窗体。数据访问页数据访问页是一个Web页,可以用来添加、编辑、查看或处理Microsoft Access数据库或SQL Server数据库中的当前数据。 编程工具Visual Basic 简介本系统的编程工具使用Visual Basic 。Visual Basic 是美国微软公司开发的一个面向对象的可视化编程工具,经过多次换代后,它已经成为一个全新的成熟的高端产品。“Visual”意为“可视化的”,指的是一种开发图形用户界面的方法,所以Visual Basic是基于Basic的可视化的程序设计语言。在Visual Basic中,一方面继承了Basic所具有的程序设计语言简单易用的特点,另一方面在其编程系统中采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视化程序设计方法。Visual Basic 是一种可视化的编程语言,利用这种可视化技术进行编程,能使编程工作变得轻松、快捷,摆脱了面向过程语言的虚度细节,而将主要精力其中在解决实际问题和设计友好界面上。同时,VB在数据库开发方面能读取和访问Access、Excel、FoxPro和ODBC等多种数据库,并能够利用VB自身所带的数据库引擎创建Access数据库,所以VB在管理信息系统(MIS)的开发和建设方面得到了广泛的应用。包括三个版本:学习版、专业版、企业版是在相同的基础上建立起来的,以满足不同层次的用户需要。三、总体设计 引言 目的本总体设计说明是根据编写网络即时聊天系统的前期需求编写的。涉及客户端登录,即时聊天,文件传输,资料修改,好友添加删除,服务端数据库建立,登录信息监控,BUG报错等方面的总体设计思想。在和同组同学们的共同研究讨论下,我们完成了对网络即时聊天系统总体设计。 专业词定义数据流图DFD(Data Flow Diagram): 数据流程图描述管理信息系统如何操作和处理各种数据。反映系统的动态特征。表达了系统分析人员对现有系统的认识,对目标系统的认识和对目标系统的设想。是系统的功能模型,通过流程建模,把系统的功能进行详细分析,从而使系统分析员可以更好的地与用户交流。数据流程图表达了数据和处理过程的关系,描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。因为数据流程图是逻辑系统的图形表示,即使不是专业的技术人员也容易理解,所以是极好的通信工具。此外,设计数据流程图只考虑系统必须完成的基本逻辑功能,完全不考虑如何具体的实现这些功能,所以它是软件设计很好的出发点。数据流程图由四种基本符号组成:(1)正方形(或立方体)代表数据的源点或终点(2)圆脚矩形(或圆形)代表变换数据的处理(3)开口矩形(或两条平行线)代表数据存储(4)箭头代表数据流,即特定的数据的流动方向.字典DD(Data Dictionary):是关于数据的信息的集合,也就是对数据流图中所包含的元素的定义的集合。数据字典由四类元素定义组成:数据流 、数据项 、数据存储、数据处理。数据流是数据结构在系统内传输的路径。数据项是不可再分割的数据单位数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。处理过程的具体处理逻辑一般用判定表或判定树来描述。数据结构反映了数据之间的组合关系。一个数据结构可由若干个数据项组成也可由若干个数据结构组成,或由若干个数据项和数据结构组成。六、总结在这个软件设计的最初,我们即按照老师的要求一步一步往下做,努力作好需求分析。因为在软件的开发过程中需求分析是十分重要的。在初步了解的基础上,我们根据老师给予的关于即时聊天系统设计思路的讲解,对系统进行了详细的需求分析。这样就使我们对于网络即时聊天系统的开发有了一个大致的思路。在最初的几个星期里,我们一直在做完善需求分析的重复工作。这样就为下一步的设计打下了坚实的基础。到了数据库设计阶段,首先选择了ACCESS 2000作为数据库管理系统。因为我们需要的数据库并不是十分复杂,经过一段时间的共同努力,我们的数据库建立成功了。下一阶段就到了编程阶段了,在这个阶段我们首先考虑的是界面,一个界面设计的好坏直接关系到使用者的方便程度,于是老师提出的要求就是实用。在实用的基础上尽量美观大方。我们经过反复的改正后,界面固定下来。然后就进入编写程序阶段了,在编程过程中,我们借鉴了很多资料,同时也请教了其他有经验的同学。在可以实现同一功能的多个控件中经过仔细研究,确定了最优的控件。这样在老师的要求和帮助下,我们的界面逐渐的得以完善并最终确定下来,到了真正编写代码的时候,我们在需求分析做的努力逐渐显示出来,因为在这个过程中,我们几乎没有遇到什么十分棘手的问题,各项功能也随之增加。在经过和老师的交流讨论之后,我们的设计也逐渐进入了尾声。这样,我们的设计就基本上完成了。在接下来的时间里,我们继续对我们的设计进行优化,包括界面的美观,以及程序的设计。在严格的测试后,逐渐使网络即时聊天系统不再出现大的错误,能够很稳定的运行。

1、论文题目:要求准确、简练、醒目、新颖。2、目录:目录是论文中主要段落的简表。(短篇论文不必列目录)3、提要:是文章主要内容的摘录,要求短、精、完整。字数少可几十字,多不超过三百字为宜。4、关键词或主题词:关键词是从论文的题名、提要和正文中选取出来的,是对表述论文的中心内容有实质意义的词汇。关键词是用作机系统标引论文内容特征的词语,便于信息系统汇集,以供读者检索。每篇论文一般选取3-8个词汇作为关键词,另起一行,排在“提要”的左下方。主题词是经过规范化的词,在确定主题词时,要对论文进行主题,依照标引和组配规则转换成主题词表中的规范词语。5、论文正文:(1)引言:引言又称前言、序言和导言,用在论文的开头。引言一般要概括地写出作者意图,说明选题的目的和意义,并指出论文写作的范围。引言要短小精悍、紧扣主题。〈2)论文正文:正文是论文的主体,正文应包括论点、论据、论证过程和结论。主体部分包括以下内容:a.提出-论点;b.分析问题-论据和论证;c.解决问题-论证与步骤;d.结论。6、一篇论文的参考文献是将论文在和写作中可参考或引证的主要文献资料,列于论文的末尾。参考文献应另起一页,标注方式按《GB7714-87文后参考文献著录规则》进行。中文:标题--作者--出版物信息(版地、版者、版期):作者--标题--出版物信息所列参考文献的要求是:(1)所列参考文献应是正式出版物,以便读者考证。(2)所列举的参考文献要标明序号、著作或文章的标题、作者、出版物信息。

聊天登录系统的毕业论文

一、前言计算机设计之初,只是为了运用于科学研究,因为其非同寻常的运算速度而大大简化了人类的脑力劳动。随着社会的快速发展,计算机已经不再是及其昂贵并且功能单一的纯粹的计算工具。当今的计算机不仅性能越来越好,体积也越来越小,设计的完美伴随的并不是价格的提升,而是越来越大众化。个人电脑是当代社会计算机的主要表现形式。在个人电脑和网络流行的今天,人类的交流方式也越来越丰富,以全球互联网络为载体的网络即时聊天工具软件越来越多的出现,不仅大大节省了信息传递所使用的能源,更体现着人类社会的丰富多彩。本软件的开发,主要是针对小型用户群,能实现基本的即时交流功能,能应用于局域网和互联网,很适合作为学校及企业内部交流工具。 项目开发的主要内容本系统能够在安装有Microsoft Office或其他带有 Microsoft Visual Basic 运行库的Microsoft Windows 98以及更高版本的操作系统环境下运行,设计并实现的功能除了基本的即时聊天,还有文件传输,自定义表情等。 项目开发运用到的主要技术1. 采用Microsoft Access 2000来完成数据库管理平台开发 。2. 采用Microsoft Visual Basic 开发平台来完成系统的前台环境(客户端)开发。3. 采用Winsock来实现客户端和服务器的通讯。二、 数据库与工具简介 基于TCP/IP 协议的C/S 模式体系结构本聊天系统包括客户端和服务器,即采用客户端—服务器架构,客户端发送、接收信息,服务器端在客户端之间转发信息。传输层协议为TCP/IP协议。客户机/服务器(C/S)结果是当前非常流行的数据库系统结构。在这种体系结构中,客户机提出请求,服务器对客户机的服务请求做出回应。每一个服务器都为整个局域网系统提供自己最擅长的服务,让所有客户机来分享;客户机上的应用程序借助于服务器的服务功能实现复杂的应用功能。在C/S结构中,数据库存储层出于服务器上,应用层和数据界面层出于客户机上。在C/S数据库服务器结构中,客户机负责管理用户界面,接收用户数据、处理应用逻辑、生成数据库服务请求,并将服务请求发送给数据库服务器,同时接收数据库服务器返回的结果,最后在将返回的结果按照一定的格式或方式显示给客户机。C/S系统结构使整个系统具有较好的性能。C/S结构的通讯成本也比较低,主要原因在于:(1) 降低了数据传输量,数据库服务器返回给客户机的仅是执行数据操作后的结果数据。(2) 由于许多应用逻辑处理由客户机来完成,因而减少了许多的不必要的与服务器的通信开销。TCP/IP协议的特点:Internet上的TCP/IP协议之所以能够得到迅速发展,不仅因为它是美国军方指定使用的通信协议,更重要的是它恰恰适应了世界范围内的数据通信的需要。TCP/IP协议主要有以下几个特点:开放的协议标准,可以免费使用,并且独立与特定的计算机硬件与操作系统;独立与特定的网络硬件,可以运行在局域网、广域网,更适用与互联网中;统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有唯一的地址;标准化的高层协议,可以提供多种可靠的用户服务。TCP协议的特点是:提供面向连接的、可靠的、全双工通信;支持数据流的传输;传输连接的可靠建立与释放;提供流量控制与拥塞控制。 Microsoft Access 2000简介关于数据库的建立,我们选择了Microsoft Access 2000作为工具,因为和商业化的SQL server相比,虽然Access在安全性和处理并发能力等方面略逊一筹,但是Access的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。微软公司通过大量地改进,将Access的新版本功能变得比最初版本强大许多。不管是处理公司的客户订单数据;管理自己的个人通讯录;还是大量科研数据的记录和处理,人们都可以利用它来解决大量数据的管理工作。Access的组成部分:表表是Access应用程序的人机交互界面,基本上是所建数据库中的表加上各种可视化的组件元素。查询查询的本质就是SQL的数据操纵语句,利用查询可以通过不同的方法来查看更改和分析数据,对表、记录、字段的多数据操作都可通过查询来完成。报表报表对象实际上就是一些制定好的特殊查询,不过这是只具有一个查询结果的显示界面,便于打印分析。宏宏是指一个或多个操作的集合,其中每个操作实现特定的功能。宏可以使某些普通的任务自动完成。模块模块就是数据库程序中的程序文件和过程文件。每一个模块可以包含一个或多个子程序、函数或属性。Access数据库窗口子数据表用户可以使用表、查询窗体和子窗体数据表来查看子数据表。子数据表可以绑定表、查询或窗体。数据访问页数据访问页是一个Web页,可以用来添加、编辑、查看或处理Microsoft Access数据库或SQL Server数据库中的当前数据。 编程工具Visual Basic 简介本系统的编程工具使用Visual Basic 。Visual Basic 是美国微软公司开发的一个面向对象的可视化编程工具,经过多次换代后,它已经成为一个全新的成熟的高端产品。“Visual”意为“可视化的”,指的是一种开发图形用户界面的方法,所以Visual Basic是基于Basic的可视化的程序设计语言。在Visual Basic中,一方面继承了Basic所具有的程序设计语言简单易用的特点,另一方面在其编程系统中采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视化程序设计方法。Visual Basic 是一种可视化的编程语言,利用这种可视化技术进行编程,能使编程工作变得轻松、快捷,摆脱了面向过程语言的虚度细节,而将主要精力其中在解决实际问题和设计友好界面上。同时,VB在数据库开发方面能读取和访问Access、Excel、FoxPro和ODBC等多种数据库,并能够利用VB自身所带的数据库引擎创建Access数据库,所以VB在管理信息系统(MIS)的开发和建设方面得到了广泛的应用。包括三个版本:学习版、专业版、企业版是在相同的基础上建立起来的,以满足不同层次的用户需要。三、总体设计 引言 目的本总体设计说明是根据编写网络即时聊天系统的前期需求编写的。涉及客户端登录,即时聊天,文件传输,资料修改,好友添加删除,服务端数据库建立,登录信息监控,BUG报错等方面的总体设计思想。在和同组同学们的共同研究讨论下,我们完成了对网络即时聊天系统总体设计。 专业词定义数据流图DFD(Data Flow Diagram): 数据流程图描述管理信息系统如何操作和处理各种数据。反映系统的动态特征。表达了系统分析人员对现有系统的认识,对目标系统的认识和对目标系统的设想。是系统的功能模型,通过流程建模,把系统的功能进行详细分析,从而使系统分析员可以更好的地与用户交流。数据流程图表达了数据和处理过程的关系,描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。因为数据流程图是逻辑系统的图形表示,即使不是专业的技术人员也容易理解,所以是极好的通信工具。此外,设计数据流程图只考虑系统必须完成的基本逻辑功能,完全不考虑如何具体的实现这些功能,所以它是软件设计很好的出发点。数据流程图由四种基本符号组成:(1)正方形(或立方体)代表数据的源点或终点(2)圆脚矩形(或圆形)代表变换数据的处理(3)开口矩形(或两条平行线)代表数据存储(4)箭头代表数据流,即特定的数据的流动方向.字典DD(Data Dictionary):是关于数据的信息的集合,也就是对数据流图中所包含的元素的定义的集合。数据字典由四类元素定义组成:数据流 、数据项 、数据存储、数据处理。数据流是数据结构在系统内传输的路径。数据项是不可再分割的数据单位数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。处理过程的具体处理逻辑一般用判定表或判定树来描述。数据结构反映了数据之间的组合关系。一个数据结构可由若干个数据项组成也可由若干个数据结构组成,或由若干个数据项和数据结构组成。六、总结在这个软件设计的最初,我们即按照老师的要求一步一步往下做,努力作好需求分析。因为在软件的开发过程中需求分析是十分重要的。在初步了解的基础上,我们根据老师给予的关于即时聊天系统设计思路的讲解,对系统进行了详细的需求分析。这样就使我们对于网络即时聊天系统的开发有了一个大致的思路。在最初的几个星期里,我们一直在做完善需求分析的重复工作。这样就为下一步的设计打下了坚实的基础。到了数据库设计阶段,首先选择了ACCESS 2000作为数据库管理系统。因为我们需要的数据库并不是十分复杂,经过一段时间的共同努力,我们的数据库建立成功了。下一阶段就到了编程阶段了,在这个阶段我们首先考虑的是界面,一个界面设计的好坏直接关系到使用者的方便程度,于是老师提出的要求就是实用。在实用的基础上尽量美观大方。我们经过反复的改正后,界面固定下来。然后就进入编写程序阶段了,在编程过程中,我们借鉴了很多资料,同时也请教了其他有经验的同学。在可以实现同一功能的多个控件中经过仔细研究,确定了最优的控件。这样在老师的要求和帮助下,我们的界面逐渐的得以完善并最终确定下来,到了真正编写代码的时候,我们在需求分析做的努力逐渐显示出来,因为在这个过程中,我们几乎没有遇到什么十分棘手的问题,各项功能也随之增加。在经过和老师的交流讨论之后,我们的设计也逐渐进入了尾声。这样,我们的设计就基本上完成了。在接下来的时间里,我们继续对我们的设计进行优化,包括界面的美观,以及程序的设计。在严格的测试后,逐渐使网络即时聊天系统不再出现大的错误,能够很稳定的运行。

聊天软件 需要什么软件开发的 不会开发 我们有现成品 做模板 做毕业设计 都可以

“对图中的那些函数,我这里稍加解释一下。”

int  WSAStartup(WORD wVersionRequested, LPWSADATA  lpWSAData);

功能是初始化Windows Socket Dll,在Windows下必须使用它。

参数:

“wVersionRequested”表示版本,可以是、等;

“lpWSAData”指向WSADATA数据结构的指针。

int socket(int family, int type, int protocol);

功能是建立Socket,返回以后会用到的Socket值。如果错误,返回-1。

参数:

“int family”参数指定所要使用的通信协议,取以下几个值:AF_UNIX(Unix内部协议)、AF_INET(Internet协议)、AF_NS Xerox(NS协议)、AF_IMPLINK(IMP连接层),在Windows下只能把“AF”设为“AF_INET”;

“int type”参数指定套接字的类型,取以下几个值:SOCK_STREAM(流套接字)、SOCK_DGRAM (数据报套接字)、SOCK_RAW(未加工套接字)、SOCK_SEQPACKET(顺序包套接字);

“int protocol”参数通常设置为0。

int bind(int sockfd, struct sockaddr *my_addr, int addrlen);

功能是把套接字和机器上一定的端口关联起来。

参数:

“sockfd”是调用socket()返回的套接字值;

“my_addr”是指向数据结构struct sockaddr的指针,它保存你的地址,即端口和IP地址信息;

“addrlen”设置为sizeof(struct sockaddr)。

int listen(int sockfd, int backlog);

功能是服务端监听一个端口,直到accept()。在发生错误时返回-1。

参数:

“sockfd”是调用socket()返回的套接字值;

“backlog”是允许的连接数目。大多数系统的允许数目是20,也可以设置为5到10。

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

功能是客户端连接服务端监听的端口。

参数:

“sockfd”是调用socket()返回的套接字值;

“serv_addr”保存着目的地端口和IP 地址的数据结构struct sockaddr;

“addrlen”设置为sizeof(struct sockaddr)。

int accept(int sockfd, void *addr, int *addrlen);

功能是服务端接受客户端的连接请求,并返回一个新的套接字,以后服务端的数据传输就使用这个新的套接字。如果有错误,返回-1。

参数:

“sockfd”是和listen()中一样的套接字值;

“addr”是个指向局部的数据结构sockaddr_in的指针;

“addrlen”设置为sizeof(struct sockaddr_in)。

int send(int sockfd, const void *msg, int len, int flags);

int recv(int sockfd, void *buf, int len, unsigned int flags);

功能是用于流式套接字或数据报套接字的通讯,我们数据的真正传输就由它们完成。

参数:

“sockfd”是发/收数据的套接字值;

“msg”指向你想发送的数据的指针;

“buf”是指向接收数据存放的地址;

“len”是数据的长度;

“flags”设置为 0。

int sendto(int sockfd, const void *msg, int len, unsigned int flags,const struct sockaddr *to, int tolen);

int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen);

功能和send、recv类似,不过是用于无连接数据报套接字的传输。

int closesocket(int sockfd)

功能是关闭套接字。

参数“sockfd”为要关闭的套接字值。

程序:

“这里的目的是让大家对Socket编程有个整体了解。不用怕,程序我会详细解释的,首先是服务端的程序。其流程是:

socket()→bind()→listen→accept()→recv()/send()→closesocket()

具体代码如下:”

#include <>

#include <>

#pragma comment(lib,"Ws2_32")

#define MYPORT 830  /*定义用户连接端口*/

#define BACKLOG 10  /*多少等待连接控制*/

int main()

{

int sockfd, new_fd;                                  /*定义套接字*/

struct sockaddr_in my_addr;          /*本地地址信息 */

struct sockaddr_in their_addr;        /*连接者地址信息*/

int sin_size;

WSADATA ws;

WSAStartup(MAKEWORD(2,2),&ws);           //初始化Windows Socket Dll

//建立socket

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

//如果建立socket失败,退出程序

printf("socket error\n");

exit(1);

}

//bind本机的MYPORT端口

 = AF_INET;                     /* 协议类型是INET  */

 = htons(MYPORT);            /* 绑定MYPORT端口*/

 = INADDR_ANY;   /* 本机IP*/

if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)

{

//bind失败,退出程序

printf("bind error\n");

closesocket(sockfd);

exit(1);

}

//listen,监听端口

if (listen(sockfd, BACKLOG) == -1)

{

//listen失败,退出程序

printf("listen error\n");

closesocket(sockfd);

exit(1);

}

printf("listen...");

//等待客户端连接

sin_size = sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)

{

printf("accept error\n");

closesocket(sockfd);

exit(1);

}

printf("\naccept!\n");

//有连接,发送ww0830字符串过去

if (send(new_fd, "ww0830\n", 14, 0) == -1)

{

printf("send error");

closesocket(sockfd);

closesocket(new_fd);

exit(1);

}

printf("send ok!\n");

//成功,关闭套接字

closesocket(sockfd);

closesocket(new_fd);

return 0;

}

对服务端程序的流程概括:

先是初始化Windows Socket Dll: WSAStartup(MAKEWORD(2,2),&ws);

然后建立Socket: sockfd = socket(AF_INET, SOCK_STREAM, 0)

再bind本机的MYPORT端口:

 = AF_INET;         /* 协议类型是INET   */

 = htons(MYPORT);       /* 绑定MYPORT端口  */

 = INADDR_ANY;   /* 本机IP           */

bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))

接下来监听端口: listen(sockfd, BACKLOG)

如果有客户端的连接请求,接收它: new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)

最后发送ww0830字符串过去: send(new_fd, "ww0830\n", 14, 0)

收尾工作,关闭socket: closesocket(sockfd);    closesocket(new_fd);  ”

编译、执行,就会一直监听830端口

客户端程序了。其流程是:

socket()→connect()→send()/recv()→closesocket()

比服务端更简单吧!其实现代码如下:”

#include <>

#include <>

#include <>

#pragma comment(lib,"Ws2_32")

#define PORT 830                            /* 客户机连接远程主机的端口 */

#define MAXDATASIZE 100                     /* 每次可以接收的最大字节 */

int main(int argc, char *argv[])

{

int sockfd, numbytes;

char buf[MAXDATASIZE];

struct sockaddr_in their_addr;        /* 对方的地址端口信息 */

if (argc != 2)

{

//需要有服务端ip参数

fprintf(stderr,"usage: client hostname\n");

exit(1);

}

WSADATA ws;

WSAStartup(MAKEWORD(2,2),&ws);         //初始化Windows Socket Dll

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

{

//如果建立socket失败,退出程序

printf("socket error\n");

exit(1);

}

//连接对方

 = AF_INET;                         /* 协议类型是INET  */

 = htons(PORT);                       /* 连接对方PORT端口 */

 = inet_addr(argv[1]);        /* 连接对方的IP */

if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1)

{

//如果连接失败,退出程序

printf("connet error\n");

closesocket(sockfd);

exit(1);

}

//接收数据,并打印出来

if ((numbytes=recv(sockfd, buf, MAXDATASIZE, 0)) == -1)

{

//接收数据失败,退出程序

printf("recv error\n");

closesocket(sockfd);

exit(1);

}

buf[numbytes] = '\0';

printf("Received: %s",buf);

closesocket(sockfd);

return 0;

}

对客户端程序的流程概括:

首先是初始化Windows Socket Dll: WSAStartup(MAKEWORD(2,2),&ws);

然后建立Socket: sockfd = socket(AF_INET, SOCK_STREAM, 0)

接着连接服务器方:

 = AF_INET;                                 /* 协议类型是INET    */

 = htons(PORT);                           /* 连接对方PORT端口      */

 = inet_addr(argv[1]);         /* 连接对方的IP  */

connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr))

连接成功就接收数据: recv(sockfd, buf, MAXDATASIZE, 0)

最后把收到的数据打印出来并关闭套接字:

printf("Received: %s",buf);      closesocket(sockfd);

编译结束后,运行服务端,然后。客户端 服务端IP  回车

你会看到服务端发来得数据。

那么基本的点对点通信就没问题了。只要两台机器同时包含服务端和客户端,就可以互相通信了。

当然,你也可以将服务端和客户端分开做,专门一个服务器负责用户登录和转发消息。

流程如下:

A客户端发登录消息-----》服务器

服务器验证发送用户消息----》客户端

A客户端想发消息给B客户端----》先发给服务端

服务器得到消息查询B客户端IP并转发消息。(或者B客户端循环发消息询问服务器有无消息)

通信结束。

  • 索引序列
  • 网络聊天系统毕业论文
  • 聊天系统的毕业论文
  • 毕业论文之网络聊天
  • 聊天系统毕业论文绪论
  • 聊天登录系统的毕业论文
  • 返回顶部