㈠ 計算機網路課設 socket 編程
、IP分組首部信息解析l 目的及要求:熟悉SOCKET的編程,利用RAW Socket編程技術設計一個應用程序能夠截獲網路底層上的IP分組,然後對其首部進行解析,將IP分組的首部信息顯示並保存到相關文件中。能初步掌握TCP/IP網路編程的方法,對網路基本協議的結構有進一步的認識。l 具體內容(1)定義好IP分組首部相關的數據結構;(2)在WINDOWS環境下實現程序;(3)在命令提示符下輸入:程序文件名 結果文件名;然後抓取IP分組顯示首部信息並保存在結果文件中,按Ctrl+C結束程序的運行。 2、TCP報文首部信息解析l 目的及要求:熟悉SOCKET的編程,利用RAW Socket編程技術設計一個應用程序能夠截獲網路底層上的IP分組,然後通過其中的協議欄位獲取TCP報文類型的分組並對其首部進行解析,將TCP報文的首部信息顯示並保存到相關文件中。能初步掌握TCP/IP網路編程的方法,對網路基本協議的結構有進一步的認識。l 具體內容(1)定義好IP分組、TCP報文首部相關的數據結構;(2)在WINDOWS環境下實現程序;(3)在命令提示符下輸入:程序文件名 結果文件名;然後抓取TCP報文分組顯示首部信息並保存在結果文件中,按Ctrl+C結束程序的運行。 3、網路連通性測試程序的設計與實現l 目的及要求:熟悉PING程序的工作原理,該程序利用ICMP的回送請求和回送應答來進行工作,而ICMP協議數據是直接封裝到IP分組後傳遞的,利用RAW Socket編程技術。能初步掌握TCP/IP網路協議的基本實現方法,對網路的實現機制有進一步的認識。l 具體內容(1)定義好IP分組、ICMP報文相關的數據結構;(2)在WINDOWS環境下實現程序;(3)在命令提示符下輸入:「myping ip地址」;不要求支持主機名,也不帶參數(有能力的同學可以實現支持主機名,並帶上-l[數據長度]、-n[報文數量]等參數),默認發送4個ICMP數據包,要求返回4次響應。返回信息的格式:「來自[IP]地址的回復:位元組=32bytes 序號=X」或「請求超時」(無法PING通的情況)。 4、路由追蹤程序的設計與實現l 目的及要求:熟悉ICMP協議的作用,利用ICMP的回送請求和回送應答來進行檢測出到達網路上任何一台目的主機途中所經過的路由器,並將結果顯示在標准輸出上。通過本實驗,使學生更加熟悉ICMP報文的結構,對ICMP協議有更好的理解和認識。l 具體內容(1)定義好IP分組、ICMP報文相關的數據結構;(2)在WINDOWS環境下實現程序;(3)在命令提示符下輸入:「mytrace IP地址 或 主機名 或 域名」;數)持續發送ICMP回送請求數據包,其中的IP首部TTL欄位依次增加,如果是中途路由器收到TTL為0的IP分組後,將會發回超時的錯誤報告ICMP響應報文,如果到達最後的主機,將會發回ICMP回送應答報文,結束追蹤。然後將整個發送過程中收到的ICMP報文中的路由器信息依次在多行中顯示出來,格式為「編號 往返時延 路由器地址」。 以上四個題目任選一個 最好能c或c++實現 現在只學過C和C++
㈡ 求一個課程設計"數據包發送和接收程序的實現(Java或C++)"如果好在加分
這個問題不小啊,呵呵!
c++的實現是服務端,服務端代碼:(我自己寫的程序,按照做)
struct sockaddr_in sin;
memset(&sin,0,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=htonl(INADDR_ANY);
sin.sin_port=htons((u_short)rcvport);
type=SOCK_STREAM;
/* Allocate a socket */
s=socket(AF_INET,type,0);
if (s < 0)
{
printf("creat sock err!");
return -2;
}
if (bind(s, (struct sockaddr *)&sin, sizeof(sin))<0){
if(s>0)
{
closesocket(s);
s=-1;
}
if (type==SOCK_STREAM&&listen(s,5)<0)
{
printf("can't listen sock port!");
// close(s);
if(s>0)
{
closesocket(s);
s=-1;
}
return -5;
}
剩下的就簡單了,while循環sccpet,然後客戶端定時send,通訊成功。
如果還有不明白的,繼續說。SOCK通訊千篇一律,沒啥可講的,看一遍代碼就通了。
㈢ 計算機網路課程設計
我給你發
㈣ 計算機網路socket linux下用c或c++寫
/*伺服器*/
#include <arpa/inet.h>
#include <errno.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/io.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/times.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
#include <unistd.h>
#define szSTR 256
#define SERVERPORT 21429 /*please modify the port with your id*/
int do_listen(const int port, const int bTcp)
{
int s = 0, r = 0, o = 1;
struct sockaddr_in h;
memset(&h, 0, sizeof(h));
h.sin_family = AF_INET; h.sin_port = htons(port);
h.sin_addr.s_addr = INADDR_ANY;
s = socket(AF_INET, bTcp?SOCK_STREAM:SOCK_DGRAM, 0);
if (s < 1) { perror("socket(listen)"); return 0;}
r = setsockopt(s, SOL_SOCKET,SO_REUSEADDR, (char *)&o, sizeof(int));
if (r == -1) { perror("setsockopt(listen)"); return 0;}
r = bind(s, (struct sockaddr *)&h, sizeof(h));
if (r == -1) { perror("bind(listen)"); return 0;}
if (bTcp) {
r = listen(s, SOMAXCONN);
if (r == -1) { perror("listen()"); return 0;}
}/*end if*/
/*signal(SIGPIPE, SIG_IGN);*/
return s;
}/*end do_listen*/
void response(int sck, struct sockaddr_in * host)
{
FILE * f = 0; char cmd[szSTR]; time_t now;
struct tm * t = 0;
f = fdopen(sck, "w+");
while(!feof(f)) {
memset(cmd, 0, szSTR);
fgets(cmd, szSTR -1, f);
time(&now);
t = localtime(&now);
if(strstr(cmd, "DATE")) {
fprintf(stderr, "Query Type: Date\n");
fprintf(f, "Date: %d %d, %d\n", t->tm_mon + 1, t->tm_mday, t->tm_year + 1900);
continue;
}/*end if*/
if(strstr(cmd, "TIME")) {
fprintf(stderr, "Query Type: Time\n");
fprintf(f, "Time: %02d::%02d::%02d\n", t->tm_hour, t->tm_min, t->tm_sec);
continue;
}/*end if*/
if(strstr(cmd, "EXIT")) break;
fprintf(f, "commands: DATE, TIME, EXIT.\n");
}/*end while*/
shutdown(sck, SHUT_RDWR);
close(sck);
fclose(f);
return ;
}/*end response*/
int main(void)
{
socklen_t sklen = 0;int sck = 0, i = 0, listener = 0;
struct sockaddr_in client; pid_t proc = 0;
system("ifconfig");
listener = do_listen(SERVERPORT, 1);
if(listener < 1) { perror("listen()"); return 0; }
for(i=0;i<2;i++) {
memset(&client, 0, sizeof(client));
sklen = sizeof(client);
sck = accept(listener, (struct sockaddr *)&client, &sklen);
if(sck < 1) break;
proc = fork();
if (proc == -1) { perror("fork()"); break ; }
if(proc) continue;
response(sck, &client);
break;
}/*next*/
close(listener);
return 0;
}/*end main*/
/*客戶機*/
#include <arpa/inet.h>
#include <errno.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/io.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/times.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
#include <unistd.h>
#define szSTR 256
#define SERVERPORT 21429 /*please modify the port with your id*/
int cnn(const char * ip, const int port)
{
struct sockaddr_in h; memset(&h, 0, sizeof(h));
h.sin_family = AF_INET; h.sin_port = htons(port);
h.sin_addr.s_addr = inet_addr(ip);
int s = socket(AF_INET, SOCK_STREAM, 0);
if (s < 1) { perror("socket(tcp)"); return 0;}
int r = connect(s, (struct sockaddr *)&h, sizeof(h));
if (r == 0) return s;
perror("connect()");
return 0;
}//end cnn
int main(void)
{
int sck = 0; FILE * f = 0; char ip[szSTR]="127.0.0.1";
fprintf(stderr, "Please input the calendar server ip:");
fgets(ip, szSTR - 1, stdin);
sck = cnn(ip, SERVERPORT);
if(sck < 1) return 0;
f = fdopen(sck, "w+");
fprintf(f, "DATE\r\n");
fgets(ip, szSTR -1 , f);
fprintf(stderr, "%s\n", ip);
fprintf(f, "TIME\r\n");
fgets(ip, szSTR -1 , f);
fprintf(stderr, "%s\n", ip);
fprintf(f, "EXIT\r\n");
fclose(f);
close(sck);
return 0;
}/*end main*/
㈤ 做區域網點對點通信
我剛剛做有例子.也許你可以參考一下.
XP,VC++6.0中文版下通過
伺服器和客戶端
每個文件編譯的時候要在工程->設置->Link里->L/對象庫模塊
最後加上ws2_32.lib
先編譯運行伺服器,再編譯運行客戶端
//TcpSrv.cpp伺服器
#include <Winsock2.h>
#include <stdio.h>
void main()
{
WORD wVersionRequested; //指定請求的windows socket版本號
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 ); //請求1.1版本的windows socket
err = WSAStartup( wVersionRequested, &wsaData ); //判斷是否出錯
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 || //判斷是否1.1版本的windows socket
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( ); //如果不是請求的版本,則退出,做清理工作
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); //初始化伺服器端套接字
SOCKADDR_IN addrSrv; //以下幾行初始化協議族及埠
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000); //6000埠
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //綁定6000埠
listen(sockSrv,5); //監聽,最大監聽數5
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1) //伺服器持續等待連接
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); //接受客戶端連接
char sendBuf[100];
sprintf(sendBuf,"Welcome %s",
inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0); //向客戶端發送數據,這里只簡單發送客戶端的ip
char recvBuf[100];
recv(sockConn,recvBuf,100,0); //接收客戶端數據
printf("%s\n",recvBuf);
closesocket(sockConn); //關閉連接
}
}
---------------------------------
---------------------------------
//TcpClient.cpp客戶端
#include <Winsock2.h>
#include <stdio.h>
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); //初始化客戶端套接字
SOCKADDR_IN addrSrv; //初始化ip地址
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); //以內置127.0.0.1做演示
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000); //6000埠
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //向伺服器端發起連接請求,與伺服器達成3次握手
char recvBuf[100];
recv(sockClient,recvBuf,100,0); //接收伺服器數據
printf("%s\n",recvBuf);
send(sockClient,"This is Zhang San",strlen("This is Zhang San")+1,0); //發送數據This is Zhang San到伺服器
closesocket(sockClient); //關閉套接字
WSACleanup(); //退出windows socket的使用
}
㈥ 求計算機網路課程設計
嘿嘿我畢業設計是跟導師要來的 你可以試試 實在不行送點東西。。
㈦ 求計算機網路課程設計,採用VC、VB、java或C等編程語言編程實現。題目如下:任選一個
我覺得兩個都挺簡單啊
由於網路只讓輸10000字,我就不把代碼全部貼出來了
我覺得用VB就行啊,用VC更簡單,不過有些大材小用了
呵呵,說說思路吧
一:根據用戶個數,確定創建的資料庫個數
然後給各種類型的資料庫以相應欄位
比方說如果是私聊,就定比如A向B的信息,B向A的信息,時間等
然後雙方向資料庫儲存數據
雙方再定時從資料庫讀取信息
二:這個小弟愚昧,是不是直接調用DOS就可以了
㈧ 網路間的通信需要ip以及埠,那麼socket又是幹嘛的呢
socket是插座,就是用有線連接的方式保證網路間的通信。比如計算機的網路插座socket,就是用網線將計算機與計算機之間連接起來。
㈨ 求寫計算機網路課程設計 校園網
1.設計任務
以學院本部校園為背景,設計一個校園網方案。
本部分為辦公區、教學區和生活區三部分。現假設:辦公區中各樓宇名為:教務處樓,黨政辦公樓,圖書館,計算機樓、講堂樓、機械樓、土木樓、海洋學院樓、藝術學院樓、教學主樓、文通樓等,生活區中有學生公寓區和教師住宅區及各食堂。假設使用預留的INTERNET地址,試根據本部校園網的應用需求和管理需求、各建築物的地理分布、確定信息點個數及信息點分布,設計出本部的校園網方案。方案中應明確學院網管中心的位置,確定拓撲方案,進行IP地址規劃,完成設備選型,註明各種設備、設施和軟體的生產商、名稱、型號、配置與價格,並分別給出其價格的出處(如網站等),基本確定方案的預算。
2.設計要求
(1)通過資料查閱和學習,了解園區網路規劃、設計的一般方法。
(2)參考和研究一些公司和高校/企業園區網的規劃和建設方案,結合《計算機網路》課程中所學知識,積極完成設計任務。
(3)認真完成需求分析,並根據需求分析完成園區網路的總體方案設計,確定網路邏輯拓撲結構和所採用的網路技術、主要設備的性能指標,進而完成設備的選型和經費預算。
(4)動手架構一個具體的LAN,要求實現WEB伺服器、FTP伺服器的安裝,並能實現WEB信息發布。
(5)創建區域網內的DNS伺服器,配置相關文件,可以對區域網內的主機作域名解析。
(6)認真按時完成課程設計報告,課程設計報告內容包括:課程設計目的、設計任務與要求、設計說明書、設計成果和設計心得五個部分。
㈩ socket編程
關於網路 socket 編程的問題,由於現在好久不編寫程序了,所以無法給你提供詳細的解答。但是我可以給你提供一些參考信息。你可以參考計算機網路關於 TCP/IP 詳解、以及教材中講解 socket 編程的相關章節。socket 編程分為 server 端、client 端。編寫 server 端、client 端的程序代碼不同。需要涉及到綁定 IP 地址、以及相關的埠號、所用的網路協議(是 TCP/IP、還是 UDP)、監聽埠(listen)等。