为了用vc写一个最简单的 socket 程序,花费了一个下午的时间,过程中出现的错误有:
'SOCKET' : illegal use of this type as an expression
syntax error : missing ';' before 'type'
syntax error : identifier 'InitWinsock' --> bool InitWinsock()
既然要做 socket 程序, #include <winsock.h> 是 必不可少的,以及 ws2_32.lib,但问题不出在这里。
该文件若是 .cpp 后缀可成功编译,然而若是 .c 就出现上述错误,可见,这便是 c与c++的区别。
首先,要保证所有的 变量声明 位于程序最前面,
int i; 也要在
int j = 5; 前面;
其次,winsock.h 中有SOCKET的宏定义, 要么大写,要么 struct socket,两者相同;
然后,在C语言中,没有bool类型,只是在宏定义中有 #define int BOOL,以及 #define TRUE 1 等。
最后,在更正所有错误后,我去除了 windows debug 等中ws2_32.lib,依然可以运行,不知何故?!
综上所述,C与C++还是有不少区别的。
虽然更正了错误,但原因不甚了解,望高手指点一二。 ......
为了用vc写一个最简单的 socket 程序,花费了一个下午的时间,过程中出现的错误有:
'SOCKET' : illegal use of this type as an expression
syntax error : missing ';' before 'type'
syntax error : identifier 'InitWinsock' --> bool InitWinsock()
既然要做 socket 程序, #include <winsock.h> 是 必不可少的,以及 ws2_32.lib,但问题不出在这里。
该文件若是 .cpp 后缀可成功编译,然而若是 .c 就出现上述错误,可见,这便是 c与c++的区别。
首先,要保证所有的 变量声明 位于程序最前面,
int i; 也要在
int j = 5; 前面;
其次,winsock.h 中有SOCKET的宏定义, 要么大写,要么 struct socket,两者相同;
然后,在C语言中,没有bool类型,只是在宏定义中有 #define int BOOL,以及 #define TRUE 1 等。
最后,在更正所有错误后,我去除了 windows debug 等中ws2_32.lib,依然可以运行,不知何故?!
综上所述,C与C++还是有不少区别的。
虽然更正了错误,但原因不甚了解,望高手指点一二。 ......
GCC 支持了许多不同的语言,包括 C、C++、Ada、Fortran、Objective C,Perl、Python 和 Ruby,甚至还有Java。
Linux 内核和许多其他自由软件以及开放源码应用程序都是用 C 语言编写并使用 GCC 编译的。
编译C++程序:
-c 只编译不连接
g++ file1 -c -o file1.o
g++ file2 -c -o file2.o
g++ file1.o file.o -o exec
g++ -c a.cpp 编译
g++ -o a a.o 生成可执行文件
也可以 g++ -o a a.cpp直接生成可执行文件。
1. 编译单个源文件
为了进行测试,你可以创建“Hello World”程序:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
printf(“Hello world!\n”);
exit(0);
}
使用如下命令编译并测试这个代码:
# gcc -o hello hello.c
# ./hello
Hello wordl!
在默认情况下产生的可执行程序名为a.out,但你通常可以通过 gcc 的“-o”选项来指 ......
GCC 支持了许多不同的语言,包括 C、C++、Ada、Fortran、Objective C,Perl、Python 和 Ruby,甚至还有Java。
Linux 内核和许多其他自由软件以及开放源码应用程序都是用 C 语言编写并使用 GCC 编译的。
编译C++程序:
-c 只编译不连接
g++ file1 -c -o file1.o
g++ file2 -c -o file2.o
g++ file1.o file.o -o exec
g++ -c a.cpp 编译
g++ -o a a.o 生成可执行文件
也可以 g++ -o a a.cpp直接生成可执行文件。
1. 编译单个源文件
为了进行测试,你可以创建“Hello World”程序:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
printf(“Hello world!\n”);
exit(0);
}
使用如下命令编译并测试这个代码:
# gcc -o hello hello.c
# ./hello
Hello wordl!
在默认情况下产生的可执行程序名为a.out,但你通常可以通过 gcc 的“-o”选项来指 ......
一、获取日历时间
time_t是定义在time.h中的一个类型,表示一个日历时间,也就是从1970年1月1日0时0分0秒到此时的秒数,原型是:
typedef long time_t; /* time value */
可以看出time_t其实是一个长整型,由于长整型能表示的数值有限,因此它能表示的最迟时间是2038年1月18日19时14分07秒。
函数time可以获取当前日历时间时间,time的定义:
time_t time(time_t *)
#include <iostream>
#include <time.h>
using namespace std;
int main(void)
{
time_t nowtime;
nowtime = time(NULL); //获取当前时间
cout << nowtime << endl;
return 0;
}
输出结果:1268575163
二、获取本地时间
time_t只是一个长整型,不符合我们的使用习惯,需要转换成本地时间,就要用到tm结构,time.h中结构tm的原型是:
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after th ......
一、获取日历时间
time_t是定义在time.h中的一个类型,表示一个日历时间,也就是从1970年1月1日0时0分0秒到此时的秒数,原型是:
typedef long time_t; /* time value */
可以看出time_t其实是一个长整型,由于长整型能表示的数值有限,因此它能表示的最迟时间是2038年1月18日19时14分07秒。
函数time可以获取当前日历时间时间,time的定义:
time_t time(time_t *)
#include <iostream>
#include <time.h>
using namespace std;
int main(void)
{
time_t nowtime;
nowtime = time(NULL); //获取当前时间
cout << nowtime << endl;
return 0;
}
输出结果:1268575163
二、获取本地时间
time_t只是一个长整型,不符合我们的使用习惯,需要转换成本地时间,就要用到tm结构,time.h中结构tm的原型是:
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after th ......
链接指示符extern C
如果程序员希望调用其他程序设计语言尤其是C 写的函数那么调用函数时必须
告诉编译器使用不同的要求例如当这样的函数被调用时函数名或参数排列的顺序可能
不同无论是C++函数调用它还是用其他语言写的函数调用它
程序员用链接指示符linkage directive 告诉编译器该函数是用其他的程序设计语言
编写的链接指示符有两种形式既可以是单一语句single statement 形式也可以是复
合语句compound statement 形式
// 单一语句形式的链接指示符
extern "C" void exit(int);
// 复合语句形式的链接指示符
extern "C" {
int printf( const char* ... );
int scanf( const char* ... );
}
// 复合语句形式的链接指示符
extern "C" {
#include <cmath>
}
链接指示符的第一种形式由关键字extern 后跟一个字符串常量以及一个普通的函数
声明构成虽然函数是用另外一种语言编写的但调用它仍然需要类型检查例如编译器
会检查传递给函数exit()的实参的类型是否是int 或者能够隐式地转换成int 型
多个函数声明可以用花括号包含在链接指示符复合语句中这是链接指示符的第二种形
式花招号被用作分割符表示链接指示符应 ......
J2ME是利用HttpConnection建立HTTP连接,然后获取数据,ASP也是利用HTTP协议,因而可以利用J2ME与ASP建立连接,从而访问数据库。
ASP是MicroSoft公司的服务器端动态页面技术,可以根据请求运行服务器端程序然后返回结果,这也给MIDP提供很多有用的功能。由于MIDP客户端处理能力不强,因此可以把一些处理任务放在服务器端,利用ASP完成一些它不能完成的任务,如操作数据库。
这里给出一个简单的例子,说明MIDP如何与ASP进行交互,完成数据库操作。
(1)确保IIS WEB服务器正常工作。
(2)建立一个测试数据库
采用ACCESS数据库,生成一个数据库文件保存到D:\J2ME\J2METEST\IIS\DATEBASE中,文件名是J2MEtest.mdb.然后新建一个数据库表-Message,创建的表包含以下字段:ID(自动编号)、MESSAGE(文本)、IP(文本)、DATE(日期)。
(3)创建ASP程序
以下是ASP程序源代码,文件名为ConnectASP.asp,保存到D:\J2ME\J2METEST\IIS\ASP中。
//ConnectASP.asp
<%@LANGUAGE=VBScript%>
<%
strDBLocation=Server.Mappath("/database/j2meTest.mdb");
strConnectionString="Provider=Microsoft.Jet.OL ......
<script>window.parent.document.getElementById('BIframe').src='B.aspx';</script>
http://www.cnblogs.com/lijigang/archive/2007/05/18/751943.html
再来看看第二种刷新方法:“重载页面”
<script>window.parent.document.frames.BIframe.RefreshmyForm();</script>
<script language="javascript" type="text/javascript">
14 function RefreshmyForm()
15 {
16 var myForm = document.Form1;
17 myForm.submit();
18 }
19 </script>
那么有人就会问了,如何在Iframe的页面中来刷新父页面呢?
我们仍然在C. ......