㈠ c语言网络编程
路由器本身不具备数据保存能力。
通常,路由器的功能是端口转发。在路由器建立端口映射(公网某端口和内网某台电脑的某端口关联)后,外网电脑才能和内网某电脑进行通信,通信过程中路由器一直负责数据的中转。但内网电脑一旦关闭连接,路由器是无法单独收取并保存信息的,它会直接把断连事件通知给连接的另一端(外网某电脑)。
例如你的情况,如果局域网里是作为服务器S(监听方),外网某电脑作为客户端C(连接方)。
S程序本身监听端口2014,而C要连接的是路由器在公网的12345端口。
设路由器在公网IP是123.124.125.126,S的内网IP是192.168.1.1。
这时需要对路由器进行手动配置,让路由器能将公网的12345端口和内网192.168.1.1这台电脑的2014映射关联。
这时,内网192.168.1.1上的S对2014进行监听(就用bind然后listen),路由器会反映到公网上,于是在公网看来,就是”电脑“123.124.125.126在对12345进行监听。
而如果外网连接123.124.125.126:12345(注意冒号),路由器会将这个连接请求转化成对192.168.1.1:2014(注意冒号)的连接请求,于是S就会收到连接,能用accept接受它。
后面都和局域网编程一样了。
有问题请继续追问。
㈡ c语言网络编程 书
朋友,我的建议是,你在学网络编程之前,一定要把c基础学好,当然不只看谭教授的书了,下面推荐的几本书被公认为c语言方面的经典书籍,分别是:
1、c和指针 Kenneth A.Reek 着 徐波译 人民邮电出版社
2、c陷阱和缺陷 Andrew Koenig着 高巍译 人民邮电出版社
3、c专家编程 Dennis Ritchie着 人民邮电出版社
另外推荐基本网络编程书籍,也被称为经典,分别是:
1、TCP/IP详解 卷1:协议 W. Richard Stevens着 谢希仁校 机械工业出版社
2、unix网络编程(第三版) steven着 清华大学出版社
你说你c基础不是很好,所以我建议你看书的先后顺序:先把谭教授那本书看透,接着看上面的c语言方面的三本书籍,当然你可以先看其中的一本或两本,看透后,你的c语言功底就很不错了(一定要结合书里面的范例多做题),此时你的基础就打好了,就可以接着看下面我给你推荐的两本关于网路编程方面的书籍了!好好学习,学海无涯!
㈢ c语言网络编程
可以,不过C语言擅长的是逻辑处理和底层交互,页面展现用C就太麻烦了
如果是网络方面的编程,建议你看看套接口Socket方面的书,最好在Linux下面,在Win下面就用wsock32的知识
㈣ c语言能网络编程吗
可以
http://wanghailq.bokewu.com/blog449534.htm
㈤ c语言的网络编程特点有哪些(在线等待,答得好马上给分!)
1. C语言的特点
C语言是一种广受欢迎的结构化程序设计语言,具有极强的生命力.
"C语言无所不能!" :适用面比较广,具有高级语言的优点和低级语言特点
与硬件无关,可移植性强
C语言是一门简洁语言:仅有32个关键字,9种控制语句
在所有高级语言中,目标代码质量高,运行效率最高
结构化,模块化语言,非常适合结构化程序设计.
2.结构化程序设计方法
结构化程序设计方法强调程序设计风格和程序结构的规范化,提倡清晰的结构.
特点:
自顶向下,逐步细化:将问题分解为子问题,将子问题分解为再小的模块.直到该模块我们可以很容易地求解为止.
模块化设计:对每个模块,用结构化的方法加以设计.
结构化编码:对每个模块,分别编写对应的函数.
目标:
便于多人分工协作完成大型软件;便于代码维护;
C语言的编程
3. C语言基本概念
Hello World! 示例
int main()
{ printf("Hello, world!");
return 0; }
函数 结构化,模块化的基础
主函数main()
库函数:数学函数,字符串函数,io函数,内存分配函数
scanf, printf,…
C语言的编程
C语言基本概念(数据表达)
数据类型:整型,实型,字符型
数组:同种数据类型的元素的集合;下标引用
指针: (基本要求:看懂别人的程序)
注:建议掌握计算机硬件工作原理,如直接寻址,间接寻址;至少掌握变量的存储方式 (《C程序设计》p201)
1) 指针即地址;指针变量是用于存放地址的变量
2) 指针可以与整型变量一样运算;
3)★ 指针必须具备合法地址才可用;
C语言的编程
C语言基本概念(数据表达)
结构 (构造类型)
是由不同数据类型的数据组成的集合体;
struct student /*定义结构体类型*/
{ char name[20];
int sex;
int age;
char addr[100]; };
注:结构体变量不能作为一个整体参加数据处理;
struct student Wang2;
Wang2.age=22;
C语言的编程
C语言基本概念(程序结构)
表达式:算术,关系,逻辑,赋值,函数
语句
顺序结构,选择结构(if语句,switch语句),
循环结构(while语句,for语句与do while语句)
函数:输入输出函数
文件:永久保存数据的方式
流式文件;FILE结构体;文件io函数;(p309)
C程序的编写与上机调试
4. C程序的编写与上机调试
Hello World! 示例
cl
tc2.0 (略)
vc6.0: 规范的project操作示范
(1) new一个空的基于console的project;
(2) 创建c文件,并输入代码;
(3) 将c文件加入project;
(4) 编译,调试,运行;
对软件开发成本高和进度估计不准确.
用户对已完成的"软件系统"不满意.
软件产品的质量不可靠.
软件的维护困难,维护的人员与费用不断增加.
缺乏完整,正确的文档资料.
软件成本在计算机系统中所占比例逐年上升.
软件的发展跟不上硬件的发展和用户的要求.
软件的规模非常庞大,多人共同开发,必须有严格和科学的管理.
软件开发过分依赖于个人的智力劳动和经验.
学习指针最好是先学些计算机硬件工作的原理,例如:直接寻址,间接寻址等,只有了解了这些内容以后,你再学指针就比较容易理会,毕竟C语言是一门介于机器语言与高级语言中间的语言,没有一些硬件工作知识是很难领悟它的真谛的.
1.指针是地址变量:它的值有两种:其一是地址,其二是内容.不同的表达方式可以取不同的值,这有点象一个家庭地址在不同的场合标识的人物也不同.例如:父母亲在他们的单位所登记的家庭地址就代表他们自己,而你在学校中登记的同样的家庭地址就代表你自己.
2.指针是可以运算的,它的运算法则与变量是一致的.
另外,在编写一个程序时,除非万不得已,一般不要使用指针变量.建议各位对于指针只要能看懂就行!
对软件开发成本高和进度估计不准确.
用户对已完成的"软件系统"不满意.
软件产品的质量不可靠.
软件的维护困难,维护的人员与费用不断增加.
缺乏完整,正确的文档资料.
软件成本在计算机系统中所占比例逐年上升.
软件的发展跟不上硬件的发展和用户的要求.
软件的规模非常庞大,多人共同开发,必须有严格和科学的管理.
软件开发过分依赖于个人的智力劳动和经验.
学习指针最好是先学些计算机硬件工作的原理,例如:直接寻址,间接寻址等,只有了解了这些内容以后,你再学指针就比较容易理会,毕竟C语言是一门介于机器语言与高级语言中间的语言,没有一些硬件工作知识是很难领悟它的真谛的.
1.指针是地址变量:它的值有两种:其一是地址,其二是内容.不同的表达方式可以取不同的值,这有点象一个家庭地址在不同的场合标识的人物也不同.例如:父母亲在他们的单位所登记的家庭地址就代表他们自己,而你在学校中登记的同样的家庭地址就代表你自己.
2.指针是可以运算的,它的运算法则与变量是一致的.
另外,在编写一个程序时,除非万不得已,一般不要使用指针变量.建议各位对于指针只要能看懂就行!
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序
操作系统,科学计算,自然语言处理…….
C语言是一门简洁语言
简单:仅有32个关键字,9种控制语句(参见附录2).在所有高级语言中,关键字最少的.
简练:在C程序中一行代码可以表达的内容,在别的语言中可能要用好几行代码
C语句: int a[10];
PASCAL:VAR a:ARRAY[1..10] OF INTEGER
生成机器码质量高. 程序执行效率高.仅比汇编程序生成的代码效率低10%~20%.在所有高级语言中,代码执行效率最高的.
学习C语言的难点
C语言:
限制少,灵活性大.使程序设计人员有较大的自由度,以适应宽广的应用面.
引出的问题:
容易出错
技巧性强
因此,C语言虽然很简洁,但学习起来,比Fortran, Basic等高级语言要困难.
怎样学好C语言
多阅读别人书写的结构良好的程序
㈥ 纯C语言网络编程
那个是VC中的库,也会用到WINDOWS SDK中的库,,,,,,,,单纯使用C语言的,做不到的。
~~~~~~~~~~~~~~~~~
㈦ c语言网络编程 网络编程什么语言
网络编程这个概念太大了,包括很多东西,需要各种语言。大概给你说一说吧。 传输层以下的编程技术,一般来说是用汇编、C语言这一类与底层结合很紧密的编程语言。比如,基本的路由器编程、网络层数据交换技术编程等等。
㈧ C语言网络编程问题
//UDP服务代码// Mole Name: Receiver.c
//
// Description:
// This sample receives UDP datagrams by binding to the specified
// interface and port number and then blocking on a recvfrom()
// call
//
// Compile:
// cl -o Receiver Receiver.c ws2_32.lib
//
// Command line options:
// sender [-p:int] [-i:IP][-n:x] [-b:x]
// -p:int Local port
// -i:IP Local IP address to listen on
// -n:x Number of times to send message
// -b:x Size of buffer to send
//
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>#define DEFAULT_PORT 5150
#define DEFAULT_COUNT 25
#define DEFAULT_BUFFER_LENGTH 4096int iPort = DEFAULT_PORT; // Port to receive on
DWORD dwCount = DEFAULT_COUNT, // Number of messages to read
dwLength = DEFAULT_BUFFER_LENGTH; // Length of receiving buffer
BOOL bInterface = FALSE; // Use an interface other than
// default
char szInterface[32]; // Interface to read datagrams from//
// Function: usage:
//
// Description:
// Print usage information and exit
//
void usage()
{
printf("usage: sender [-p:int] [-i:IP][-n:x] [-b:x]\n\n");
printf(" -p:int Local port\n");
printf(" -i:IP Local IP address to listen on\n");
printf(" -n:x Number of times to send message\n");
printf(" -b:x Size of buffer to send\n\n");
ExitProcess(1);
}//
// Function: ValidateArgs
//
// Description:
// Parse the command line arguments, and set some global flags to
// indicate what actions to perform
//
void ValidateArgs(int argc, char **argv)
{
int i; for(i = 1; i < argc; i++)
{
if ((argv[i][0] == '-') || (argv[i][0] == '/'))
{
switch (tolower(argv[i][1]))
{
case 'p': // Local port
if (strlen(argv[i]) > 3)
iPort = atoi(&argv[i][3]);
break;
case 'n': // Number of times to receive message
if (strlen(argv[i]) > 3)
dwCount = atol(&argv[i][3]);
break;
case 'b': // Buffer size
if (strlen(argv[i]) > 3)
dwLength = atol(&argv[i][3]);
break;
case 'i': // Interface to receive datagrams on
if (strlen(argv[i]) > 3)
{
bInterface = TRUE;
strcpy(szInterface, &argv[i][3]);
}
break;
default:
usage();
break;
}
}
}
}//
// Function: main
//
// Description:
// Main thread of execution. Initialize Winsock, parse the command
// line arguments, create a socket, bind it to a local interface
// and port, and then read datagrams.
//
int main(int argc, char **argv)
{
WSADATA wsd;
SOCKET s;
char *recvbuf = NULL;
int ret,
i;
DWORD dwSenderSize;
SOCKADDR_IN sender,
local; // Parse arguments and load Winsock
//
ValidateArgs(argc, argv); if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
{
printf("WSAStartup failed!\n");
return 1;
}
// Create the socket and bind it to a local interface and port
//
s = socket(AF_INET, SOCK_DGRAM, 0);
if (s == INVALID_SOCKET)
{
printf("socket() failed; %d\n", WSAGetLastError());
return 1;
}
local.sin_family = AF_INET;
local.sin_port = htons((short)iPort);
if (bInterface)
local.sin_addr.s_addr = inet_addr(szInterface);
else
local.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(s, (SOCKADDR *)&local, sizeof(local)) == SOCKET_ERROR)
{
printf("bind() failed: %d\n", WSAGetLastError());
return 1;
}
// Allocate the receive buffer
//
recvbuf = GlobalAlloc(GMEM_FIXED, dwLength);
if (!recvbuf)
{
printf("GlobalAlloc() failed: %d\n", GetLastError());
return 1;
}
// Read the datagrams
//
for(i = 0; i < dwCount; i++)
{
dwSenderSize = sizeof(sender);
ret = recvfrom(s, recvbuf, dwLength, 0,
(SOCKADDR *)&sender, &dwSenderSize);
if (ret == SOCKET_ERROR)
{
printf("recvfrom() failed; %d\n", WSAGetLastError());
break;
}
else if (ret == 0)
break;
else
{
recvbuf[ret] = '\0';
printf("[%s] sent me: '%s'\n",
inet_ntoa(sender.sin_addr), recvbuf);
}
}
closesocket(s); GlobalFree(recvbuf);
WSACleanup();
return 0;
}
㈨ 怎样用C语言做socket网络编程
mfc只是对socket进行了一些封装,大部分人做网络编程都是用的原始的socket,比如如下接口都可以在c下进行调用
1.socket()
2.bind()
3.connect()
4.listen()
5.accept()
6.send() 和recv()
7.sendto() 和recvfrom()
8.close() 和shutdown()
9.getpeername()
10.gethostname()
这些接口是在Winsock2.h中定义的不是在mfc中定义的,你只需要包含Winsock2.h头文件和Ws2_32.lib库就可以了。
㈩ 网络编程C语言入门知识
c
语言
是高级语言,但由于它可以通过指针对内存进行访问,具有了低级语言的特性,因此很多人也称它是中级语言。按照内容来说C语言有自己的语言符号和语句规则,他有3种基本的结构:顺序结构,选择结构、循环结构。然后按照不同的需要通过用这三种结构的不同“组合”(当然不是拼凑那种简单组合)就可以编出不同功能的程序了。
当然还有指针和结构体等其他一些内容,但编程强调的是算法能力。算法即是你要做一件事的步骤,在编程里面体现的就是你要实现一个功能要知道编写的内容有几部分每一部分大概用什么方法去实现。