用的广播IP,所以校内网不用设置,直接在校内网随便找台电脑打开服务端,然后再随便找台电脑打开客户端,然后就可以做100以内的加法了。。。

说明:客户端输入“ready”,服务端会随机发送一条加法算式,客户端发送结果,如果回答正确就显示“Right!”,然后可以输入“ready”做下一道题,否则显示“Wrong!”,需重新输入结果,直到做对为止。。。

还想加点UI,看来要学习多线程了。。。

就是这么蛋疼。。。

客户端

  1. #include<stdio.h>
  2. #include<winsock.h>
  3. #pragma comment (lib,"ws2_32.lib")
  4.  
  5. int main()
  6. {
  7. char buffer[];
  8. WSADATA data;
  9. WSAStartup(MAKEWORD(,), &data);
  10. SOCKET mySocket;
  11. struct sockaddr_in server;
  12. server.sin_family = AF_INET;
  13. server.sin_port = htons();
  14. server.sin_addr.s_addr = inet_addr("10.7.4.255");
  15. mySocket = socket(AF_INET, SOCK_DGRAM, );
  16. int len = sizeof(server);
  17. while(scanf("%s", buffer) != EOF)
  18. {
  19. sendto(mySocket, buffer, sizeof(buffer), ,(sockaddr*)&server, len);
  20. recvfrom(mySocket, buffer, sizeof(buffer), , (sockaddr *)&server, &len);
  21. printf("%s\n", buffer);
  22. }
  23. closesocket(mySocket);
  24. WSACleanup();
  25. return ;
  26. }

服务端

  1. #include <stdio.h>
  2. #include <winsock.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #pragma comment (lib,"ws2_32.lib")
  6.  
  7. int main()
  8. {
  9. WSADATA data;
  10. WSAStartup(MAKEWORD(, ), &data);
  11. SOCKET mySocket;
  12. sockaddr_in from;
  13. sockaddr_in local;
  14. local.sin_family = AF_INET;
  15. local.sin_addr.s_addr = INADDR_ANY;
  16. local.sin_port = htons();
  17. mySocket = socket(AF_INET, SOCK_DGRAM, );
  18. bind(mySocket, (sockaddr *)&local, sizeof(local));
  19. char right[] = "Right!";
  20. char wrong[] = "Wrong!";
  21. char inputError[] = "Input Error!";
  22. char answer[];
  23. char buffer[];
  24. srand(time(NULL));
  25. int len = sizeof(from);
  26. while()
  27. {
  28. recvfrom(mySocket, buffer, sizeof(buffer), , (sockaddr *)&from, &len);
  29. if(strcmp(buffer, "ready") == )
  30. {
  31. int x = rand() % ;
  32. int y = rand() % ;
  33. int z = x + y;
  34. sprintf(answer, "%d", z);
  35. sprintf(buffer, "%d + %d = ?", x, y);
  36. sendto(mySocket, buffer, sizeof(buffer), , (sockaddr *)&from, len);
  37. int ok = ;
  38. while(!ok)
  39. {
  40. recvfrom(mySocket, buffer, sizeof(buffer), , (sockaddr *)&from, &len);
  41. if(strcmp(buffer, answer) == )
  42. {
  43. ok = ;
  44. sendto(mySocket, right, sizeof(right), , (sockaddr *)&from, len);
  45. }
  46. else
  47. sendto(mySocket, wrong, sizeof(wrong), , (sockaddr *)&from, len);
  48. }
  49. }
  50. else sendto(mySocket, inputError, sizeof(inputError), , (sockaddr *)&from, len);
  51. }
  52. closesocket(mySocket);
  53. WSACleanup();
  54. return ;
  55. }

无聊拿socket写的100以内的加法考试。。。的更多相关文章

  1. 用shell写个100以内的所有数字之和

    #!/bin/bash i=2 while ((i<=100));do j=2 while ((j<=i/2));do if ((i%j==0));then break fi let j+ ...

  2. python、C++经典算法题:打印100以内的素数

    题目 打印100以内的素数 思路1 素数的特点: 素数一定是奇数 一个数如果是合数,那么它一定能够被2到这个合数的开平方内的某个素数整除(这个特点是提升效率的关键) 一个数如果不能被从2到它自身开平方 ...

  3. 实现100以内的素数输出(Python与C++对比)

    今天从链接http://www.2cto.com/kf/201302/187699.html中看到了Python实现100以内的素数输出的算法,颇受感触.尤其是被其中的Python的列表生成器的使用方 ...

  4. 1.2输出100以内的素数&输出前100个素数。

    输出100以内的素数只是一个嵌套,在1.1的基础上添加一层循环,只需要注意从2开始,并且变量需要换一个. #include<stdio.h> int main() { ; ; i < ...

  5. PHP面试题之实现输出100以内的质数

    最近求职时的其中一道面试题: 求100之内的质数 <? //求100以内质数 for ($i = 1; $i <= 100; $i++) { $k = 0; for ($j = 1; $j ...

  6. while做法1.兔子生兔子 2.求100以内质数的和3.洗发水15元 牙膏5元 香皂2元 150元的算法

    1.兔子生兔子 2.求100以内质数的和 3.150块钱花完问题

  7. 9月13日JavaScript语句循环(100以备奇偶数、100以内与7先关的数、100以内整数的和、10以内阶乘、乘法口诀、篮球弹起高度、64格子放东西)

    3.循环 循环是操作某一个功能(执行某段代码). ①循环四要素: a 循环初始值 b 循环的条件 c 循环状态 d 循环体 ②for循环 a 穷举:把所有的可能性的都一一列出来. b 迭代:每次循环都 ...

  8. while:1.兔子生兔子问题 2.打印菱形 3.求100以内质数的和4.洗发水15元一瓶,牙膏5元一支,香皂2元一块,150元刚好花完

    1.兔子生兔子问题: 2.打印菱形 3.求100以内质数的和 4.洗发水15元一瓶,牙膏5元一支,香皂2元一块,150元刚好花完有多少种情况?

  9. for嵌套:1.兔子生兔子问题 2.打印菱形 3.求100以内质数的和

    1.兔子生兔子问题 方法一: 方法二: 2.打印菱形 3.求100以内质数的和

随机推荐

  1. 使用CLRMD时通过Symbol Server找Dac的位置来初始化ClrRuntime

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用CLRMD时通过Symbol Server找Dac的位置来初始化ClrRuntime.

  2. 调试postgresql9.5.2最新源码

    最近在考量数据库的选型,考虑后期把数据切换到postgresql ,postgresql源码用c实现,代码很精炼完美,值得学习下 首先去pgsql官网下载最新的源码 ,然后还需要perl,bison ...

  3. JavaRTS-DTraceProvider

    https://docs.oracle.com/javase/realtime/doc_2.0_u1/release/JavaRTSDTraceProvider.html

  4. 24小时学通LINUX内核系列

    http://www.cnblogs.com/lihuidashen/category/667475.html

  5. Android(java)学习笔记177:BroadcastReceiver之 应用程序安装和卸载 的广播接收者

           国内的主流网络公司(比如网易.腾讯.百度等等),他们往往采用数据挖掘技术获取用户使用信息,从而采用靶向营销.比如电脑上,我们浏览网页的时候,往往会发现网页上会出现我们之前经常浏览内容的商 ...

  6. sublime text 3.0使用

    # 快捷键    //未完待续 ctrl+p : 文件快速搜索 Ctrl+D : 选词 (按住-继续选择下个相同的字符串) ctrl+L : 选择整行(按住-继续选择下行,即按住ctrl不放按一次L则 ...

  7. 29、Jquery Ajax

    Ajax Asynchronsous Javascript and XML(异步Javascript和XML). Ajax 是一种无需重新加载整个页面的情况下,更新局部页面的技术. 不是指一种单一的技 ...

  8. 《你不常用的c#之一》:略谈unsafe

    转自csdn:http://blog.csdn.net/robingaoxb/article/details/6199508 msdn里讲到: “在 C# 中很少需要使用指针,但仍有一些需要使用的情况 ...

  9. LINUX nohup命令输入输出深浅进出

    无论是否将 nohup命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中.如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中 ...

  10. oracle模糊查询效率提高

    1.使用两边加‘%’号的查询,oracle是不通过索引的,所以查询效率很低. 例如:select count(*) from lui_user_base t where t.user_name lik ...