问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-24 18:32

我来回答

2个回答

热心网友 时间:2022-04-18 20:51

  下面是个人用了一个40分钟左右的时间编写的程序,在这编写过程中,非常重要的一点就是: 要理解 tcp协议编写程序的原理,即编写服务器端的过程,以及编写客户端的过程。 只要把握这两点就可以很容易编写出来了,但是要快速编写出这个程序,那么VC6.0开发工具里,最好要安装一个番茄插件,这个插件可以快速提高你的编写程序的效率,还有也要安装msdn 文档,这样在编写过程中,遇到对某个函数的参数想不全的时候,使用msdn就能快速帮你回忆了。 呵呵,如果你那一天去面试一家牛*的公司的哇,很有可能就是 在笔试完成之后,就要进行机试了,这就完全考查出你的真正编程水平了。 能在极短时间里完成一个socket网络程序,那么就可以令面试官感到非常满意了。 不过,这个程序,还没有连接数据库,以后再继续搞了。
  如果你去面试 深圳科技园 那家 伟易达 集团公司的软件工程师的哇,那么机试题目就是这个。 当时我去面试,首先进行笔试,面试官对我笔试成绩比较满意,所以就叫我留下来吃顿饭,下午进行机试。 当时我应聘岗位是Linux系统工程师C语言, 可是笔试题目,不但考核C,还考核C++,JavaScript,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));
  listen(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;
}
  此文章来自于个人博客: 阿浪博客 http://blog.163.com/wenxianliang08@126/
  客户端源码:
  #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 Isconnect=connect(socketClient, (struct sockaddr *)&addrServer, sizeof(struct sockaddr));
  if(Isconnect!=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;
}

热心网友 时间:2022-04-18 22:09

服务端:

客户端:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 网络程序属于win7自带的附件程序之一对吗? 看很多做玛姿宝的朋友经常在朋友圈里“喜提豪车”,是不是*? 欧阳娜娜的私服搭配很好看,你喜欢吗? 序列号dmpp5943fk15是ipad几啊! 网络应用程序有那些? 欧阳娜娜罕见翻车,穿波点蓬蓬裙甜美仙气,过于成熟好看吗? 苹果平板dmppc45ufk15序列号是什么时间激活的啊 网络功能程序包括哪些? 欧阳娜娜有哪些甜美可爱的穿搭值得借鉴? 听说可口可乐当年垄断市场,请问垄断营销的产品需要具备什么性质 在哪些场景需要应用网络编程? 网络程序与一般的单机环境运行的程序有何不同? 揭朋友圈里“喜提豪车”是不是骗局? DMPP2C0QFK15我的ipad air是几代,什么系统呢?谁告诉我? 欧阳娜娜经常穿的马丁 在朋友圈里做微商,怎样才能喜提爱车 型号名称ipad Air,型号号码MD789CH/B,序列号DMPP3KQTFK15是什么? 喜提对象是什么意思 欧阳娜娜晒私服穿搭,黑色套装配马丁靴又美又飒,扎小揪揪有多可爱? 巴斯夫的DMPP专利什么时候到期 为什么欧阳娜娜的“花生腿”一点都不直,却最适合穿马丁靴? 19岁欧阳娜娜和51岁那英撞衫为什么两人穿出了不同的风格? 微交易如何代理 国内外正规安全微交易代理平台? ipad2 请各位帮我看一下这台机子是 什么时候激活的?是不是翻新机?谢了!序列号 DMPPF8F0G5VV 网络程序设计及应用 杨超越、杨幂的这双鞋所有人都喊丑,为什么还能火? 玛莎拉蒂品牌新的起点 MC20能否带领“超跑皇后”回归? 网络程序设计? 序列号:DMPP4AW6G5VY型号MGKM2ZP&#47;A 我买的港货,谁帮我查查是不是翻新的,什么时 马丁靴比较硬朗,怎么才能搭配出可爱风格? 编写网络程序需要注意的因素有哪些? 哪位能帮我看一下我的ipad是什么时候激活的,貌似碰见了无量商家,来火,急救! 序列号为:DMPPF8F0G5VV 说说你的微商朋友现在都怎么样了? 网络软件是什么? 对于大美女欧阳娜娜的穿搭你喜欢么? ipad 的序列号DMPPGLBHFK14,我想知道是不是国行正品 c语言可以写网络程序吗?? 我的iPad序列号是DMPP4F46G5VY,请问怎么查看是不是翻新机吗 “网络应用程序”过几年会代替“桌面应用程序”吗? DMPR2TM0FK14 这个是iPad的什么型号 28度左右的天气,钓鱼什么时间去比较好?