?? main.c
字號:
#include <string.h>
#include <stdio.h>
#include "Target\44blib.h"
#include "Target\44b.h"
#include "iisdmatest\iis.h"
void * function[][2]=
{
(void *)Record_Iis, "Test Recording and Playing ",
0,0
}; //這個函數做什么?
void Isr_Init(void)
{
rINTCON=0x5; //Non-vectored,IRQ enable,FIQ disable //
rINTMOD=0x0; //All=IRQ mode//
//rINTMSK=~(BIT_EINT0 | BIT_GLOBAL); //開(不屏蔽)0中斷源
}
void Main(void)
{
char aa;
int i;
int sock_fd,new_fd; /*sock_fd,new_fd是套接字描述*/
char filename[20]; /*存放要傳送文件的文件名*/
struct sockaddr_in my_addr; /*服務器的地址結構體*/
struct sockaddr_in their_addr; /*主機的地址結構體*/
int sin_size;
FILE *fp;
char szsendbuf[1024],head[8]; /*發送數據緩沖區大小為1K*/
int nsize, allsize=0;;
int *phead=head+4;
Port_Init();
Uart_Init(0,115200);
Isr_Init();
Led_Display(0xf);
Delay(0);
Beep(0x1);
Uart_Select(0); //Select UART0//
Uart_Printf("\n*************************************************************************");
Beep(0x0);
Uart_Printf("\n* -S3C44B0X+uda1341音頻實驗- *");
Uart_Printf("\n* Version 1.01 *");
Uart_Printf("\n* By:Morningsword@sohu.com *");
Uart_Printf("\n* UART Config--COM:115.2kbps,8Bit,NP,UART0 *");
Uart_Printf("\n*------------------Begin to Start Record&Play test,OK? (Y/N)--------------------*");
Led_Display(0x0);
aa= Uart_Getch(); //等待并從串口中得到一個字符
if((aa=='Y')||(aa=='y'))
while(1)
{
i=0;
Uart_Printf("\n");
while(1)
{ //display menu
Uart_Printf("%2d:%s",i+1,function[i][1]);
i++;
if((int)(function[i][0])==0)
{
Uart_Printf("\n");
break;
}
if((i%4)==0)
Uart_Printf("\n");
}
Uart_Printf("\nSelect the function to test?");
i=Uart_GetIntNum();
i=i-1;
Uart_Printf("\n");
if(i>=0 && (i<(sizeof(function)/8)) ) //sizeof是求字節數運算符
( (void (*)(void)) (function[i][0]) )();
/*create socket*/
if((sock_fd=socket(AF_INET,SOCK_STREAM,0))= = ?1) /*建立流式套接字描述符*/
{ perror("socket");
exit(1);
}
/*服務器結構體的地址賦初值*/
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(MYPORT); /*服務器的端口號3000*/
my_addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(my_addr.sin_zero),8); /*填充0,湊齊長度*/
if(bind(sock_fd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))= = ?1) /*綁定*/
{ perror("bindB"); /*綁定失敗*/
exit(1);
}
if(listen(sock_fd,BACKLOG)= = ?1) /*監聽端口是否有請求*/
{ perror("listen"); /*監聽失敗*/
exit(1);
}
while(1)
{ sin_size=sizeof(struct sockaddr_in);
if ((new_fd=accept(sock_fd,(struct sockaddr *)&their_addr,&sin_size))== ?1)
{ perror("accept");
continue;
}
printf("server:got connection from %s\n",inet_ntoa(their_addr.sin_addr));
read(new_fd,filename,20); /*從端口讀文件名*/
printf("%s\n",filename);
if((fp=fopen(filename,"r"))==NULL) /*打開文件*/
{ printf("Can't find the file");
exit(1) ;
}
nsize=1024;
allsize=0;
/*每次從文件讀取1024個字節發送出去,若讀出少于1024個字節,則認為已到達文件末尾*/
while(nsize = = 1024)
{ bzero(szsendbuf,1024); /*清空緩沖區*/
/*從文件中讀取并發送到緩沖區,填寫通信頭的數據長度*/
nsize = *phead = fread(szsendbuf,1,1024,fp);
write(new_fd,head,8); /*發送協議頭*/
nsize =write(new_fd,szsendbuf,nsize); /*發送數據*/
allsize+=nsize; /*統計發送字節數*/
if(allsize) /*每發送一次,打印當前發送信息*/
printf("now size:%d this time %d times:%d\n",allsize,nsize,allsize/1024);
if(nsize <= 0) /*若發送完畢,退出*/
{ printf("Can't send data!\n");
return 0;
}
}
close(new_fd);
fclose(fp);
}
close(sock_fd);
return 0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -