无聊拿socket写的100以内的加法考试。。。
用的广播IP,所以校内网不用设置,直接在校内网随便找台电脑打开服务端,然后再随便找台电脑打开客户端,然后就可以做100以内的加法了。。。
说明:客户端输入“ready”,服务端会随机发送一条加法算式,客户端发送结果,如果回答正确就显示“Right!”,然后可以输入“ready”做下一道题,否则显示“Wrong!”,需重新输入结果,直到做对为止。。。
还想加点UI,看来要学习多线程了。。。
就是这么蛋疼。。。
客户端
#include<stdio.h>
#include<winsock.h>
#pragma comment (lib,"ws2_32.lib") int main()
{
char buffer[];
WSADATA data;
WSAStartup(MAKEWORD(,), &data);
SOCKET mySocket;
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons();
server.sin_addr.s_addr = inet_addr("10.7.4.255");
mySocket = socket(AF_INET, SOCK_DGRAM, );
int len = sizeof(server);
while(scanf("%s", buffer) != EOF)
{
sendto(mySocket, buffer, sizeof(buffer), ,(sockaddr*)&server, len);
recvfrom(mySocket, buffer, sizeof(buffer), , (sockaddr *)&server, &len);
printf("%s\n", buffer);
}
closesocket(mySocket);
WSACleanup();
return ;
}
服务端
#include <stdio.h>
#include <winsock.h>
#include <string.h>
#include <time.h>
#pragma comment (lib,"ws2_32.lib") int main()
{
WSADATA data;
WSAStartup(MAKEWORD(, ), &data);
SOCKET mySocket;
sockaddr_in from;
sockaddr_in local;
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons();
mySocket = socket(AF_INET, SOCK_DGRAM, );
bind(mySocket, (sockaddr *)&local, sizeof(local));
char right[] = "Right!";
char wrong[] = "Wrong!";
char inputError[] = "Input Error!";
char answer[];
char buffer[];
srand(time(NULL));
int len = sizeof(from);
while()
{
recvfrom(mySocket, buffer, sizeof(buffer), , (sockaddr *)&from, &len);
if(strcmp(buffer, "ready") == )
{
int x = rand() % ;
int y = rand() % ;
int z = x + y;
sprintf(answer, "%d", z);
sprintf(buffer, "%d + %d = ?", x, y);
sendto(mySocket, buffer, sizeof(buffer), , (sockaddr *)&from, len);
int ok = ;
while(!ok)
{
recvfrom(mySocket, buffer, sizeof(buffer), , (sockaddr *)&from, &len);
if(strcmp(buffer, answer) == )
{
ok = ;
sendto(mySocket, right, sizeof(right), , (sockaddr *)&from, len);
}
else
sendto(mySocket, wrong, sizeof(wrong), , (sockaddr *)&from, len);
}
}
else sendto(mySocket, inputError, sizeof(inputError), , (sockaddr *)&from, len);
}
closesocket(mySocket);
WSACleanup();
return ;
}
无聊拿socket写的100以内的加法考试。。。的更多相关文章
- 用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+ ...
- python、C++经典算法题:打印100以内的素数
题目 打印100以内的素数 思路1 素数的特点: 素数一定是奇数 一个数如果是合数,那么它一定能够被2到这个合数的开平方内的某个素数整除(这个特点是提升效率的关键) 一个数如果不能被从2到它自身开平方 ...
- 实现100以内的素数输出(Python与C++对比)
今天从链接http://www.2cto.com/kf/201302/187699.html中看到了Python实现100以内的素数输出的算法,颇受感触.尤其是被其中的Python的列表生成器的使用方 ...
- 1.2输出100以内的素数&输出前100个素数。
输出100以内的素数只是一个嵌套,在1.1的基础上添加一层循环,只需要注意从2开始,并且变量需要换一个. #include<stdio.h> int main() { ; ; i < ...
- PHP面试题之实现输出100以内的质数
最近求职时的其中一道面试题: 求100之内的质数 <? //求100以内质数 for ($i = 1; $i <= 100; $i++) { $k = 0; for ($j = 1; $j ...
- while做法1.兔子生兔子 2.求100以内质数的和3.洗发水15元 牙膏5元 香皂2元 150元的算法
1.兔子生兔子 2.求100以内质数的和 3.150块钱花完问题
- 9月13日JavaScript语句循环(100以备奇偶数、100以内与7先关的数、100以内整数的和、10以内阶乘、乘法口诀、篮球弹起高度、64格子放东西)
3.循环 循环是操作某一个功能(执行某段代码). ①循环四要素: a 循环初始值 b 循环的条件 c 循环状态 d 循环体 ②for循环 a 穷举:把所有的可能性的都一一列出来. b 迭代:每次循环都 ...
- while:1.兔子生兔子问题 2.打印菱形 3.求100以内质数的和4.洗发水15元一瓶,牙膏5元一支,香皂2元一块,150元刚好花完
1.兔子生兔子问题: 2.打印菱形 3.求100以内质数的和 4.洗发水15元一瓶,牙膏5元一支,香皂2元一块,150元刚好花完有多少种情况?
- for嵌套:1.兔子生兔子问题 2.打印菱形 3.求100以内质数的和
1.兔子生兔子问题 方法一: 方法二: 2.打印菱形 3.求100以内质数的和
随机推荐
- SSH-KeyGen 的用法 【转载】
SSH-KeyGen 的用法 secureCrt通过密钥登录 做法:1.登录A机器 2.ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或 ...
- 无法打开SQL Server的连接
机房收费系统重构版的登陆敲了好几天了,总算把登陆窗口敲完了,代码调试的差点儿相同了,问题就处在数据库了. SQL Server配置管理里的SQL Server服务都启动了,可是还是报这个 ...
- android81 多线程下载和断电续传
package com.itheima.multithreaddownload; import java.io.BufferedReader; import java.io.File; import ...
- 关于XCode5打开工程闪退的一种解决方案
今天同事遇到一个问题,是关于xcode5打开工程文件一直闪退的问题.后来查看了一下崩溃日志.有如下描述: xception Type: EXC_CRASH (SIGABRT) Exception Co ...
- N!末尾有多少个零
题目一:210!最后结果有几个零. 请自己思索10分钟以上再看解释 凡是这种题目必有规律可言, 关键是你找到这个规律的恒心.可采用笨拙的方法思考. 1! = 1 ...
- Linux shell的&&和||--转载
Linux shell的&&和|| shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中.当 $? == 0 时,表示执行成功:当 $? ...
- [转载]js中__proto__和prototype的区别和关系
首先,要明确几个点:1.在JS里,万物皆对象.方法(Function)是对象,方法的原型(Function.prototype)是对象.因此,它们都会具有对象共有的特点.即:对象具有属性_ ...
- WPF学习之资源-Resources
WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性.比如通过Resour ...
- wiki 使用笔记
Wiki 安装:Linux(Redhat EL5.3)下安装配置MediaWiki wiki配置: 配置文件:DefaultSettings.php //权限等配置 左边导航条:/wiki/inde ...
- oracle 11g 安装及网络配置
非原创,纯属笔记 安装:基本按照默认下一步安装的 1)可执行安装文件[ setup.exe ]双击安装 2):配置安全更新,取消下面的“我希望通过My Oracle Support接受安全更新(W)” ...