資源簡介
分別編一個客機程序和服務器程序,首先建立客戶程序與服務器之間正確的socket連結,然后利用send和recv函數,客戶程序將一個較長的文本文件(如幾k字節)中的數據發送給服務器。要求服務器全部正確地接收到所有的數據(一個也不能少),并將其存入一個文件。注意,先要傳文件的大小(簡單的方法是服務器知道文件的大小),服務器方生成子進程后要循環地接受數據,直至文件數據全部收到。在異種機之間測試程序。比較服務器收到的文件中的數據和客戶機原先文件中數據是否完全相同。文本文件測試完成后,可再用二進制文件測試。 1.編寫一個shell程序 findit,該程序搜索參數1指定的目錄樹,查找所有的以 .c和 .h結尾的文件,如文件行中含有參數2指定的字符串,顯示該行和相應的文件名。如目錄參數1缺省,則從當前目錄中搜索。如: ./findit /home/student/wang searchstring 搜索以 /home/student/wang為根的目錄樹中的c程序和頭文件,查找含有searchstring字符串的行,顯示文件名。 ./findit searchstring 從當前目錄開始搜索。請用含有shell特殊字符的字符串模式進一步調試該shell程序。 為了便于查找當前目錄或登錄目錄下如wang目錄中的執行文件 findit,可以在當前Shell中執行: PATH=.:$HOME/wang:$PATH

代碼片段和文件信息
#include?“sockcom.h“
int?initSocket(char?*rhost)?{
int?sockfd;
struct?sockaddr_in?server;
struct?hostent?*hp?*gethostbyname();
sockfd?=?socket(AF_INET?SOCK_STREAM?0);
if?(sockfd<0)?error(“Error?opening?stream?socket.“);
if?((hp=gethostbyname(rhost))==NULL)?error(“%s?Unknow?host.“?rhost);
server.sin_family?=?AF_INET;
bcopy((char?*)hp->h_addr?(char?*)&server.sin_addr.s_addr?hp->h_length);
server.sin_port=htons(PORT);
if(connect(sockfd?(struct?sockaddr?*)&server?sizeof(server))<0)
error(“Error?connect?to?remote?server.“?);
return?sockfd;
}
int?main(int?argc?char?*argv[])
{
if?(argc!=4)?{
error(“Usage:?client?file1?remotehost?file2“);
}
printf(“%s?%s?%s?%s\n“?argv[0]?argv[1]?argv[2]?argv[3]);
int?n;
char?buf[BUFSIZE];
char?*filename?=?argv[1];
FILEINFO?fileinfo;
strcpy(fileinfo.fname?argv[3]);
int?fd?=?open(filename?O_RDONLY);
fileinfo.length?=?lseek(fd0LSEEK_END);
printf(“Filename:?%s?length:?%d\n“?fileinfo.fname?fileinfo.length);
int?sockfd=initSocket(argv[2]);
if(write(sockfd?&fileinfo?sizeof(fileinfo))<0)?error(“Error?sending?metadata.“);
lseek(fd?0L?SEEK_SET);
while((n=read(fd?buf?BUFSIZE))>0)?{
write(sockfd?buf?n);
}
close(fd);
printf(“EOF:?disconnect\n“);
close(sockfd);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????513??2007-12-08?20:25??試驗4\findit
?????文件?????????95??2007-12-08?20:28??試驗4\findit-sim
?????文件????????983??2007-12-09?00:31??試驗4\readme.txt
?????文件???????1271??2007-12-09?00:14??試驗4\Socket\client.c
?????文件????????102??2007-12-09?00:14??試驗4\Socket\error.c
?????文件???????1494??2007-12-24?13:52??試驗4\Socket\server.c
?????文件????????303??2007-12-09?00:14??試驗4\Socket\sockcom.h
?????文件???????1485??2007-12-09?00:14??試驗4\Socket\server.c.bak
?????目錄??????????0??2007-12-08?16:00??試驗4\Socket
?????目錄??????????0??2007-12-09?00:16??試驗4
-----------?---------??----------?-----??----
?????????????????6246????????????????????10
- 上一篇:基于FPGA的電子秒表代碼
- 下一篇:RXTX API文檔
評論
共有 條評論