• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: UNIX  

资源简介

分别编一个客机程序和服务器程序,首先建立客户程序与服务器之间正确的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


评论

共有 条评论