鱼C论坛

 找回密码
 立即注册
查看: 5469|回复: 15

软件基础实习

[复制链接]
发表于 2013-8-26 15:48:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
    小学期开始了,我们学校开了一门实习课叫《软件基础实习》。废话不多说,上课的第一节课就布置了任务:
用C/C++写一个短信模拟系统。咋一看,感觉好难啊。难就难在这个程序是在不同pc机发送和接受数据,而不像以往的程序在同一个电脑完成,如我们经典的hello,world!只涉及到在一个机器上执行。好像这不是C/C++涉及的范畴吧。忘大神指点迷津,应该看哪方面的书?还有一个问题下节课提问:短信软件的基本框架和涉及到的关键技术。我已经百度过了,没有我要的东西。求助啊求助,在此不胜感激了啊!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-26 16:47:08 | 显示全部楼层
socket编程。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-26 17:13:57 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-27 00:07:16 | 显示全部楼层
我也不懂:loveliness::loveliness::loveliness::loveliness::loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-27 09:46:06 | 显示全部楼层
网络编程:shock:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-27 12:10:44 | 显示全部楼层

哎,只怪我们的课太坑爹了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-27 12:11:25 | 显示全部楼层

你有什么建议吗?求建议
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-27 20:57:49 | 显示全部楼层
C语言也能干大事里面好象有讲到这些
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-28 22:36:54 | 显示全部楼层
首先问下,你用的是windows吧?

用什么编译环境?

你这个程序肯定是要进行网络编程,用的最多的就是tcp编程。

程序其实很简单,例如电脑a和电脑b
假设a当做服务器,b作为一个客户端。
a电脑的程序必须先启动,然后创建socket,进行套接字监听。
b电脑程序启动,创建套接字,去连接a电脑的socket绑定的端口,也就是connect。
连接上了,就可以进行读和写了。

不过如果你没学过socket编程,那么为啥你们老师要给你这么一个题目,费解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-29 13:49:25 | 显示全部楼层
纳尼.......................................
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-29 16:44:05 | 显示全部楼层
wangjie5540 发表于 2013-8-28 22:36
首先问下,你用的是windows吧?

用什么编译环境?

是windows,vc++;
我们的题目是模拟短息系统;
虽然没学过,但现在开始学。这不,一边上网查资料,一边看书,一边发帖学嘛。
今天有点进展了,但程序之间还是不能发送东西。
服务器(ip:10.14.8.206)
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc, char* argv[])
{
        WSADATA wsaData;
        WSAStartup(MAKEWORD(2,0),&wsaData);
        SOCKET s=socket(AF_INET,SOCK_STREAM,0);//创建一个套间字
    sockaddr_in sctAddr;
        sctAddr.sin_family=AF_INET;
    sctAddr.sin_port=htons(7153);
        sctAddr.sin_addr.S_un.S_addr=inet_addr("10.14.8.206");
        bind(s,(sockaddr*)&sctAddr,sizeof(sockaddr));//与本地ip绑定
        listen(s,2);//监听
        sockaddr_in addrofclient;//定义变量存远端地址
        int nLen=sizeof(addrofclient);
        while(true){
        SOCKET ns=accept(s,(sockaddr*)&addrofclient,&nLen);//接受远端client连接请求
        printf("%s请求和本机连接\n",inet_ntoa(addrofclient.sin_addr));
        int i=send(ns,"Hello,my son!!!",sizeof("Hello,my son!!!"),0);//发送消息给client
        char *cbuf="";
        int j=recv(ns,cbuf,sizeof(cbuf),0);//接受client的消息
        printf("%s:\n",cbuf);
        printf("%d,%d",i,j);//打印revc和send的返回值
        closesocket(ns);
        }
        closesocket(s);
        WSACleanup();
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-29 16:51:44 | 显示全部楼层
@wangjie5540

好像发的东西太多不全。
服务器的结果是:
10.14.8.209请求链接

16,-1
客户端的:
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")

int main(int argc, char* argv[])
{
        WSADATA wsaData;
        WSAStartup(MAKEWORD(2,0),&wsaData);//加载socket版本
        SOCKET sLocal=socket(AF_INET,SOCK_STREAM,0);//创建一个客户段socket
        sockaddr_in addrServer;
        addrServer.sin_family=AF_INET;
        addrServer.sin_port=htons(7153);
        addrServer.sin_addr.S_un.S_addr=inet_addr("10.14.8.206");//取服务器的地址和端口
        connect(sLocal,(sockaddr*)&addrServer,sizeof(sockaddr));//开始连接服务器
        char FAR *buf="";
        int i=recv(sLocal,buf,sizeof(buf),0);//接受服务器的信息
        printf("%s\n",buf);
        int j=send(sLocal,"Hello Server!!!",sizeof("Hello Server!!!"),0);//发送信息给服务器
        printf("%d,%d\n",i,j);//打印recv和send的返回值
        closesocket(sLocal);
        WSACleanup();
        return 0;
}
结果是:
-1,16
从结果看,send函数成功,recv函数不成功。是这样解释吗?求大神赐教啊!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-29 19:05:10 | 显示全部楼层
wangjie5540 发表于 2013-8-28 22:36
首先问下,你用的是windows吧?

用什么编译环境?

哈哈,今天吃完饭回来调试一下结果出来了,太高兴了!!!
我把原来发送的
char *buf="";
改成了
char buf[255]={0};
然后就测试对了。
但我想知道是为什么?
还有,我想使我的程序可以通过敲键盘来进行通信怎么弄?求赐教!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-4 18:01:01 | 显示全部楼层
幻影小刺客 发表于 2013-8-29 19:05
哈哈,今天吃完饭回来调试一下结果出来了,太高兴了!!!
我把原来发送的
char *buf="";

近期住院,奶奶的,挺痛苦
你问的为什么,这个好说
char a[100] 其实就是分配空间了
char* a = ""; 这个根本没有分配空间,肯定是存储不了东西,出错也是应该的

至于你说的敲键盘就能交互,学习socket编程去吧,只有知道tcp连接之类 你才行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-6 16:28:32 | 显示全部楼层
wangjie5540 发表于 2013-9-4 18:01
近期住院,奶奶的,挺痛苦
你问的为什么,这个好说
char a[100] 其实就是分配空间了

oh,很抱歉听到这!注意身体!感谢鼓励,我们的项目能实现通信了,但只能是一对一通信,不能多对一或,多对多。看来我得好好努力一把了!再次谢谢鼓励啊,希望你快点好,身体健康才是王道!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-6 17:01:16 | 显示全部楼层
好像以前见过类似的                    
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-5 18:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表