基于unix平台的tcpip协议的通信程序设计内容摘要:
15 int new_fd,sockfd1。 struct sockaddr_in client_addr。 sockfd1=*((int *)fd)。 int sin_size=sizeof(struct sockaddr_in)。 //循环接收连接 while(1){ new_fd=my_accept(sockfd1,(struct sockaddr *)amp。 client_addr,amp。 sin_size)。 ARG *arg=(ARG*)malloc(sizeof(ARG))。 argattribute_fd=new_fd。 memcpy(amp。 argattribute_addr, amp。 client_addr, sin_size)。 i++。 //创建线程读写操作 createthread(amp。 thread[i], NULL, start_routine,(void*)arg)。 pthread_detach(thread[i])。 printf(you get a connection from:%s\n,i_ntoa())。 } } void* start_routine(void* arg) { int rc。 ARG newarg。 =((ARG *)arg)attribute_fd。 =((ARG *)arg)attribute_addr。 int nready。 //设置 select fd_set read,write。 FD_ZERO(amp。 read)。 FD_SET(,amp。 read)。 FD_ZERO(amp。 write)。 FD_SET(,amp。 write)。 //创建线程进行写文件 pthread_t thread1。 createthread(amp。 thread1, NULL, start_routine1,(void*)amp。 newarg)。 int recvvalue。 char datain[MAXDATASIZE]。 通信网络设计课程设计 题号: u1 设计日期 20200104 20200115 //写循环 while(1){ fd_set writeset,readset。 writeset=write。 readset=read。 nready=select(+1, amp。 readset, amp。 writeset, NULL,NULL)。 //接收字符或 stop命令 recvvalue=my_recv(, datain, MAXDATASIZE, 0)。 if (recvvalue==0) { close()。 pthread_cancel(thread1)。 break。 } else if (recvvalue0){ datain[recvvalue]=39。 \039。 printf((%s)say:%s\n,i_ntoa(),datain)。 if (strcmp(datain,stop)==0){ //shutdown(,0)。 //关闭接收 while(1){ if (FD_ISSET(,amp。 writeset)){ shutdown(,1)。 //关闭发送 pthread_cancel(thread1)。 break。 } else printf(waiting...you are writing...\n)。 } shutdown(,0)。 //关闭接收 break。 } } } pthread_join(thread1,NULL)。 free(arg)。 rc=pthread_mutex_lock(amp。 quitmutex)。 if (rc){ perror(mutex lock error\n)。 exit(1)。 } quit++。 rc=pthread_mutex_unlock(amp。 quitmutex)。 if (rc){ perror(mutex unlock error\n)。 exit(1)。 } pthread_exit(NULL)。 通信网络设计课程设计 题号: u1 设计日期 20200104 20200115 } void* start_routine1(void* newarg) { ARG arg。 =((ARG *)newarg)attribute_fd。 =((ARG *)newarg)attribute_addr。 fd_set write,read。 FD_ZERO(amp。 write)。 FD_SET(,amp。 write)。 FD_ZERO(amp。 read)。 FD_SET(,amp。 read)。 int nready。 char dataout[MAXDATASIZE]。 while(1) { fd_set readset,writeset。 readset=read。 writeset=write。 nready=select(+1, amp。 readset, amp。 writeset, NULL,NULL)。 if (nready==1){ perror(select error\n)。 exit(1)。 } //输入字符或 quit命令 scanf(%s,dataout)。 my_send(, dataout, strlen(dataout),0)。 if (strcmp(dataout,stop)==0){ //shutdown(,1)。 //关闭发送 while(1){ if (!FD_ISSET(,amp。 readset)){ shutdown(,0)。 break。 } else printf(waiting...you are reading...\n)。 } shutdown(,1)。 //关闭发送 break。 } } pthread_exit(NULL)。 } 通信网络设计课程设计 题号: u1 设计日期 20200104 20200115 include mon/ typedef struct arg_t { int attribute_fd。 struct sockaddr_in attribute_addr。 }ARG。 void* start_send(void* clientarg)。 void myread(int sockfd,struct in_addr addr,pthread_t thread)。 main(int argc, char *argv[]) { struct sockaddr_in serveraddr。 int clientfd。 struct hostent *change。 int sizelen。 if (argc!=2) { printf(Usage: ./fileclient serverName\n)。 exit(1)。 } printf(结束通信输入 stop.\n)。 printf(connecting......\n)。 //创建一个 socket clientfd=my_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)。 //由主机名得到 struct hostent 结构 change=my_gethostbyname(argv[1])。 //连接服务器 sizelen=sizeof(struct soc。基于unix平台的tcpip协议的通信程序设计
相关推荐
脚接地, XTAL2 引脚接外部振荡器信号。 3. 控制引脚 控制引脚共有 4个,分别是 RST/ VPD、 ALE/ PR0G、 PSEN、 EA/ Vpp。 复位引脚 RST/ VPD 是第 9 脚,需要外接复位电路,在此引脚上出现两个机器周期的高电平就会使单片机复位。 一般来说复位电路是在此引脚和 Vss 引脚之间加一个 10k 欧姆的电阻,在和 Vcc 引脚之间加 — 个 10pF
0)=0) then time_over=39。 039。 else if(time_second=0) then if(time_remain(3 downto 0)=0) then time_remain(7 downto 4)=time_remain(7 downto 4)1。 time_remain(3 downto 0)=1001。 time_second:=59。 else
ADC0809 的输入要求是电压量 , 所以在 AD590 的负极接出一个 1kΩ 的电阻 R 和一个 100Ω 的可调电阻 W, 将电流量变为电压量送入ADC0809。 通过调节可调电阻 , 便可在输出端 VT 获得与绝对温度成正比的电压量 , 即 10 mV/K。 图 31 AD590 应用电路图 AD590 +5V VT 10mv/K 100ΩW 1000Ω R 何凡
液晶模块内部的控制器共有 11 条控制指令,丰富的指令可以完成液晶的时序控制、工作方式设置和数据显示等。 采用的 LCD1602 液晶模块是标准 16 针插座,接口电路如图 26 所示,及各引脚说明如表 26 所示。 11 61 51 41 31 21 11 098675432V S SER / WR SV LV D DD 2D 1D 0D 7D 6D 5D 4D 3B L KB L A1 6
智能控制的人工神经网络控制方向上,基于人工神经网络和模糊逻辑有机结合的神经模糊技术,已成为近年来的一个热门课题。 国内外智能照明发展概况 “智能建筑”是综合计算机、信息通信等方面最先进 的技术,使建筑物内的电力、空调、照明、防灾、防盗、运输设备等,实现建筑物综合管理自动化、远程通信和办公自动化的有效运作,并使这三种功能结合起来的建筑。 人工智能技术在建筑与照明中的应用趋势不断扩大。 正如英国的
计过程 设计电路图,并根据所设计电路图 和单片机工作原理,为实现电子钟附带日历及复位功能,在书上查找资料程序,并自己进行编程。 经反复调试 和修改,最终编译通过, proteus 仿真成功, LCD 显示器能根据 程序要求来显示时间并可通过开关进行显示位的选择和时间的加减,而且按复位键可以回到初始设置,即程序中设计的 2020518 WED 23:59:20。 将所编程序置入单片机内