当前位置:首页 » 网络连接 » 计算机网络课程设计socket
扩展阅读
网络安全使用习惯 2025-09-20 20:07:28
网络监控与路由器设置 2025-09-20 19:39:12

计算机网络课程设计socket

发布时间: 2022-04-23 17:24:59

计算机网络课设 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)等。