华尔街学徒工
“对图中的那些函数,我这里稍加解释一下。”
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、开拓青少年全球视野,提高青少年综合素质。上网使青少年的政治视野、知识范畴更加开阔,从而有助于他们全球意识的形成。同样,又可提高青少年综合素质。通过上网,可以培养他们和各式各样的人交流的能力;通过在网上阅览各类有益图书,触类旁通,提高自身文化素养。 (二)网络的负面影响 1、对于青少年“三观”形成构成潜在威胁。青少年很容易在网络上接触到资本主义的宣传论调、文化思想等,思想处于极度矛盾、混乱中,其人生观、价值观极易发生倾斜,从而滋生全盘西化、享乐主义、拜金主义、崇洋媚外等不良思潮。 2、网络改变了青年在工作和生活中的人际关系及生活方式。青少年在网上公开、坦白地发表观点意见,要求平等对话,对青少年工作者的权威性提出挑战,使思想政治工作的效果往往不能达到预期。同时,上网使青少年容易形成一种以自我为中心的生存方式,集体意识淡薄,个人自由主义思潮泛滥。 3、信息垃圾弱化青少年的思想道德意识。有关专家调查,网上信息47%与色情有关,六成左右的青少年在网上无意中接触到黄色信息。还有一些非法组织或个人也在网上发布扰乱政治经济的黑色信息,蛊惑青少年。这种信息垃圾将弱化青少年思想道德意识,污染青少年心灵,误导青少年行为。 4、网络的隐蔽性,导致青少年不道德行为和违法犯罪行为增多。一方面,少数青少年浏览黄色和非法网站,利用虚假身份进行恶意交友、聊天。另一方面网络犯罪增多,例如传播病毒、黑客入侵、通过银行和信用卡盗窃、等。这些犯罪主体以青少年为主,大多数动机单纯,有的甚至是为了“好玩”、“过瘾”和“显示才华”。另外,有关网络的法律制度不健全也给青少年违法犯罪以可乘之机。
“对图中的那些函数,我这里稍加解释一下。” int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSADa
手机与亲情议论文范文 大家都经常看到作文的身影吧,特别是应用极广的议论文,议论文可分为三部分:是什么,为什么,怎么做。那么写这类作文时还应注意哪些问题呢?以下是
Asp:ASP001基于ASP的论坛的设计与实现ASP002在线手机销售系统ASP003基于WEB的旅游网站建设ASP004购物系统1ASP005购物系统2AS
找论文资料,求代写,就无忧无虑论文网
软件技术与硬件技术相比较,其发展的空间更为广阔、应用的领域更为广泛,因此计算机软件技术得到了关注和发展。下面是我为大家整理的计算机软件技术毕业论文,供大家参考。