教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

江苏大学嵌入式课程设计报告

来源:网络收集 时间:2026-09-23
导读: 江苏大学嵌入式课程设计报告 嵌入式系统课程设计报告 学院名称: 电气学院 专业班级: 电科1102 学生姓名: 胡志文 学 号: 江苏大学嵌入式课程设计报告 Linux下的SOCKET通信实验 摘要: (1)掌握Linux SOCEKT编程的常用函数: ---编写服务器程序server ---

江苏大学嵌入式课程设计报告

嵌入式系统课程设计报告

学院名称: 电气学院 专业班级: 电科1102 学生姓名: 胡志文 学 号:

江苏大学嵌入式课程设计报告

Linux下的SOCKET通信实验

摘要: (1)掌握Linux SOCEKT编程的常用函数:

---编写服务器程序server ---编写客户端程序client

---编写聊天程序的服务器程序listener ---编写聊天程序的客户端程序talker

(2)下载调试上述程序

一.1.socket概念:所谓socket通常也称作"套接字",应用程序通常通过"

套接字"向网络发出请求或者应答网络请求。以J2SDK-1.3为例,Socket和ServerSocket类库位于java .net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

2.socket基本应用:Socket实际在计算机中提供了一个通信端口,可以

通过这个端口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。在应用开发中就像使用文件 句柄一样,可以对 Socket句柄进行读、写操作。套接字是网络的基本构件。它是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连进程。套接字存在通信区域(通信区域又称地址簇)中。套接字只与同一区域中的套接字交换数据(跨区域时,需要执行某和转换进程才能实现)。WINDOWS 中的套接字只支持一个域——网际域。套接字具有类型。我们将 Socket翻译为套接字.

3.socket发展现状:七十年代中,美国国防部高研署(DARPA)将TCP/IP的

软件提供给加利福尼亚大学Berkeley分校后,TCP/IP很快被集成到Unix中,同时出现了许多成熟的TCP/IP应用程序接口(API)。这个API称为Socket接口。今天,SOCKET接口是TCP/IP网络最为 通用的API,也是在INTERNET上进行应用开发最为通用的API。

二.1.程序原理:

江苏大学嵌入式课程设计报告

2.程序流程图:

客户端流程图: 服务端流程图:

3、程序代码及相关代码注释: (1)客户端程序:

下面是一个简单的TCP客户端程序client.c,在这个程序中你必须提供一个命令行参数:服务端所在机器主机名。当然,服务端还必须在客户端运行以前就已经正常运行。

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h>

江苏大学嵌入式课程设计报告

#include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h>

#define PORT 3490 // 连接时使用的端口号

#define MAXDATASIZE 100 // 一次所能接收的最长字符数 int main(int argc, char *argv[]) {

int sockfd, numbytes; char buf[MAXDATASIZE]; struct hostent *he;

struct sockaddr_in their_addr; // 客户端信息 if (argc != 2) {

fprintf(stderr,"usage: client hostname\n"); exit(1); }

if ((he=gethostbyname(argv[1]))== NULL) { // 域名解析

perror("gethostbyname"); exit(1); }

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0))== -1) {

perror("socket"); exit(1);

//创建套接字,返回文件描述符

}

their_addr.sin_family = AF_INET; // 采用ipv4

their_addr.sin_port = htons(PORT); // 将主机号转换成网络号 their_addr.sin_addr = *((struct in_addr *)he->h_addr);

memset(&(their_addr.sin_zero), '\0', 8); // 制作成字符串

if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) {

//请求连接 perror("connect"); exit(1);

}

if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) {

perror("recv"); exit(1);

//接收数据

}

buf[numbytes] = '\0';

printf("Received: %s",buf);

close(sockfd); //关闭套接字 return 0; }

江苏大学嵌入式课程设计报告

(2)服务端程序:

TCP 服务器端通过如下步骤建立:

a) 通过函数 socket()建立一个套接口。

b) 通过函数 bind()绑定一个地址(IP 地址和端口地址)。这一步确定了服务器的位置,使客户端知道如何访问。

c) 通过函数 listen()监听(listen)端口的新的连接请求。 d) 通过函数 accept()接受新的连接。

下面是一个简单的TCP服务器程序server.c,该程序对于每一个连接的客户端直接发送 Hello, world!\n”字符串:

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/wait.h> #include <signal.h>

#define MYPORT 3490 //设置端口号

#define BACKLOG 10 //可以同时连接的最大客户端数 void sigchld_handler(int s) {

while(wait(NULL) > 0); }

//信号处理函数,防止出现僵尸进

int main(void) {

int sockfd, new_fd;

//sockfd是监听描述符,new_fd是

连接描述符

struct sockaddr_in my_addr; //服务端信息 struct sockaddr_in their_addr; //客户端信息 int sin_size;

struct sigaction sa; int yes=1;

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

perror("socket"); exit(1);

//创建服务端文件描述符

}

if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int))==-1) { //

perror("setsockopt");

江苏大学嵌入式课程设计报告

exit(1); }

my_addr.sin_family = AF_INET; //ipv4

my_addr.sin_port = htons(MYPORT); //将主机号转换成网络号 my_addr.sin_addr.s_addr = INADDR_ANY; //可以和任何主机通信 memset(&(my_addr.sin_zero), '\0', 8);

if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1){

perror("bind"); exit(1);

…… 此处隐藏:2968字,全部文档内容请下载后查看。喜欢就下载吧 ……
江苏大学嵌入式课程设计报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1116265.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)