當前位置:首頁 » 編程語言 » c語言網路編程
擴展閱讀
sqldelete用法 2022-01-21 14:43:27

c語言網路編程

發布時間: 2022-01-15 09:16:23

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種基本的結構:順序結構,選擇結構、循環結構。然後按照不同的需要通過用這三種結構的不同「組合」(當然不是拼湊那種簡單組合)就可以編出不同功能的程序了。

當然還有指針和結構體等其他一些內容,但編程強調的是演算法能力。演算法即是你要做一件事的步驟,在編程裡面體現的就是你要實現一個功能要知道編寫的內容有幾部分每一部分大概用什麼方法去實現。