如何编写简单的socket网络程序 如何编写基于tcp协议的网络程序

做回自我 2024-05-30 02:28:31
最佳回答
下面是个人用了一个40分钟左右的时间编写的程序,在这编写过程中,非常重要的一点就是: 要理解 tcp协议编写程序的原理,即编写服务器端的过程,以及编写客户端的过程。 只要把握这两点就可以很容易编写出来了,但是要快速编写出这个程序,那么vc6.0开发工具里,最好要安装一个番茄插件,这个插件可以快速提高你的编写程序的效率,还有也要安装msdn 文档,这样在编写过程中,遇到对某个函数的参数想不全的时候,使用msdn就能快速帮你回忆了。 呵呵,如果你那一天去面试一家**的公司的哇,很有可能就是 在笔试完成之后,就要进行机试了,这就完全考查出你的真正编程水平了。 能在极短时间里完成一个socket网络程序,那么就可以令面试官感到非常满意了。 不过,这个程序,还没有连接数据库,以后再继续搞了。  如果你去面试 深圳科技园 那家 伟易达 集团公司的软件工程师的哇,那么机试题目就是这个。 当时我去面试,首先进行笔试,面试官对我笔试成绩比较满意,所以就叫我留下来吃顿饭,下午进行机试。 当时我应聘岗位是linux系统工程师c语言, 可是笔试题目,不但考核c,还考核c++,j**ascript,html。 我感觉好奇怪,心里想,好像我是应聘vc++开发那个岗位了。 于是我等到下午,他拿来机试题目之时,才真正明白,果然是他要安排我从事vc++开发了,题目就是:编写基于tcp/ip协议网络程序,并实现简单的聊天程序,而且要连接数据库。 当时我又失望了。 于是我就提出,我不想做这个题目,因为我是想应聘linux系统c语言开发的。 就这样失望的走了。  下面是个人完全能运行的代码:  服务器端源码:  #include<stdio.h>#include <winsock2.h>#pragma comment (lib,"ws2_32.lib")  int main(){ word wversionrequested; wsadata wsadata; int err; wversionrequested = makeword( 2, 2 ); err = wsastartup( wversionrequested, &wsadata ); if ( err != 0 ) { return 0; }if ( lobyte( wsadata.wversion ) != 2 || hibyte( wsadata.wversion ) != 2 ) { wsacleanup( ); return 0; }  socket socketserver=socket(af_inet,sock_stream,0);  sockaddr_in addrserver;  addrserver.sin_family=af_inet;  addrserver.sin_addr.s_un.s_addr=htonl(inaddr_any);  addrserver.sin_port=htons(6000);  bind(socketserver, (struct sockaddr *)&addrserver, sizeof(struct sockaddr));  l**ten(socketserver, 5);  sockaddr_in addrclient;  int addrlen=sizeof(sockaddr_in);  char sendbuf[100];  char recvbuf[100];  int i=1; while(1) { printf("服务器端等待第%d个客户端连接请求...\n", i++);  socket newsocketserver=accept(socketserver,(struct sockaddr *)&addrclient, &addrlen);  if(newsocketserver!=invalid_socket) { printf("服务器端与客户端连接成功...\n"); }  memset(sendbuf,0,100);  sprintf(sendbuf,"welcome you to come here");  send(newsocketserver, sendbuf, strlen(sendbuf)+1,0);  memset(recvbuf,0,100);  recv(newsocketserver,recvbuf,100,0);  printf("服务器端收到信息:%s\n",recvbuf);  closesocket(newsocketserver); }  wsacleanup();  return 0;}  此文章来自于个人博客: 阿浪博客   客户端源码:  #include<stdio.h>#include <winsock2.h>#pragma comment (lib,"ws2_32.lib")  int main(){ word wversionrequested; wsadata wsadata; int err; wversionrequested = makeword( 2, 2 ); err = wsastartup( wversionrequested, &wsadata ); if ( err != 0 ) { return 0; }if ( lobyte( wsadata.wversion ) != 2 || hibyte( wsadata.wversion ) != 2 ) { wsacleanup( ); return 0; } socket socketclient=socket(af_inet,sock_stream,0); sockaddr_in addrserver; addrserver.sin_family=af_inet; addrserver.sin_addr.s_un.s_addr=inet_addr("127.0.0.1"); addrserver.sin_port=htons(6000); char sendbuf[100]; char recvbuf[100];   printf("客户端向服务器端连接请求...\n");  int **connect=connect(socketclient, (struct sockaddr *)&addrserver, sizeof(struct sockaddr));  if(**connect!=0) { printf("客户端无法连接服务器端...\n");  return 0; }  printf("客户端已成功连接服务器端...\n");  memset(recvbuf,0,100); recv(socketclient,recvbuf,100,0);  printf("客户端收到信息:%s\n",recvbuf);  memset(sendbuf,0,100); sprintf(sendbuf,"hello , i am mr wen !"); send(socketclient, sendbuf, strlen(sendbuf)+1,0); closesocket(socketclient); wsacleanup(); return 0;} 20210311
汇率兑换计算器

类似问答
  • 最早的互联网网络通信协议叫tcp/ip吗
    • 2024-05-30 13:13:14
    • 提问者: 未知
    不是,最早的互联网络通信协议是开放系统互联(open system interconnection,osi)。国际标准化组织(**o)制定了osi模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。osi模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、...
  • 编写银行业务模拟程序。
    • 2024-05-30 11:26:39
    • 提问者: 未知
    main() include include include"header/bank_sim.h extern eventl**t ev;事件表*/ extern event en;事件*/ extern size_t totaltime,custnum;累计客户逗留时间,客户数*/ int main(void) { if!bank_open()){ return exit_failure;初始化...
  • 用c++编写程序:求圆形circle的周长和面积,请编写一个基于对象的程序。数据成员包括r(半径)
    • 2024-05-30 17:32:31
    • 提问者: 未知
    #include <iostream.h>#define pi 3.141593class circle{public:circle():m_radius(1){}~circle(){}void setradius(double radius){if(radius<1e-6) radius=1e-6;m_radius=radius;}double getradius(){retu...
  • 我用vb6.0编写一个简单程序,用来打开...
    • 2024-05-30 09:03:12
    • 提问者: 未知
    如果要显示信息的话可以用form_click 事件+msgbox 实现。
  • 如何用mql4语言 编写外汇趋势交易程序
    • 2024-05-30 10:21:26
    • 提问者: 未知
    1新建ea程序:打开mql4编辑器,新建一个ea,起名myea,点击下一步进入编程界面2界面上三个函数oninit()是初始化函数,当载入ea的时候执行一次;ondeinit(const int reason)是当关闭ea的时候执行一次;void ontick()函数,是当每个价格到达的时候执行;3在开头部分需要填写的外部可设置的参数(包括止盈,止损,交易手数,两个均线的周期 ,一个20日均线,一...
  • 怎么用vc++6.0编写程序
    • 2024-05-30 20:46:39
    • 提问者: 未知
    怎么用vc+6.0编写程序,vc+6.0是微软比较老的c++集成开发环境,是微软viualtudio的一员,一般用于新手学习c++使用,也有人用习惯了vc6.0,只是将其做为一个编辑器,因为新版...
  • 如何编写php程序
    • 2024-05-30 17:46:19
    • 提问者: 未知
    11.学习php肯定少不了要看看学习资料,个人比较推荐【菜鸟教程】或者【w3cshool】,这两个网站的知识内容都比较基础,适合大部分初学者22.如何用php编程?这是很有学问的问题,首先要明白php主要使用在什么领域,其次也很重要的一个问题,个人的愿望是什么?php能否帮忙实现这个愿望?假如php不是我的爱好,又没有很明确的目标需要用php去实现,那么用php编程也没有意义2相关内容未经授权抓取...
  • 编写一个vb程序
    • 2024-05-30 14:29:40
    • 提问者: 未知
    随机产生20个学生的成绩,按降序排列后打印输出。然后统计各分数段人数,即0-59,60-69,70-79,80-89,90-100,然后显示统计结果。最后计算出平均分 和方差d,并显示。...
  • 用vb编写程序。
    • 2024-05-30 04:03:23
    • 提问者: 未知
    方法一:private sub command1_click() form1.cls dim i1 as integer, i2 as integer, i3 as integer, i4 as integer, i5 as integer dim cl**t as string for i1 = 65 to 70 for i2 = i1 + 1 to 70 ...
  • 哪些是 用c语言 编写的程序
    • 2024-05-30 06:09:34
    • 提问者: 未知
    cobol(common business oriented language)—是数据处理领域最为广泛的程序设计语言。cobol历史 cobol(common business oriented language)是第一个广泛使用的高级编程语言。在企业管理中,...
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。