如何在HP-UX上通过TCPIP协议传输文件?

作者:佚名 上传时间:2023-05-26 运行软件:C语言 socket编程 软件版本:HP-UX 11i v3 版权申诉

本示例代码演示了如何通过TCP/IP协议在HP-UX系统下传输文件。实现方式是使用socket编程,创建客户端和服务端,通过套接字通信完成文件传输。附有详细的注释。

客户端:

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

#define PORT 5000
#define BUFSIZE 1024

void error(char *msg)
{
    perror(msg);
    exit(1);
}

int main(int argc, char *argv[])
{
    int sockfd, n, count = 0;
    struct sockaddr_in serv_addr;
    struct hostent *server;
    char buffer[BUFSIZE];
    FILE *fp;

    if (argc != 3) {
        fprintf(stderr,"usage %s hostname filename\n", argv[0]);
        exit(1);
    }

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
        error("ERROR opening socket");

    server = gethostbyname(argv[1]); //通过hostname获取主机名
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
    }

    memset(&serv_addr, 0, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr,
          (char *)&serv_addr.sin_addr.s_addr,
          server->h_length);
    serv_addr.sin_port = htons(PORT);

    if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
        error("ERROR connecting");

    fp = fopen(argv[2], "rb");
    if (fp == NULL)
        error("ERROR opening file");

    while(!feof(fp)) {
        memset(buffer, 0, BUFSIZE);
        n = fread(buffer, 1, BUFSIZE, fp);
        if (n < 0)
            error("ERROR reading from file");
        count += send(sockfd, buffer, n, 0);
        if (count < 0)
            error("ERROR writing to socket");
    }

    fclose(fp);
    close(sockfd);
    return 0;
}

服务端:

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

#define PORT 5000
#define BUFSIZE 1024

void error(char *msg)
{
    perror(msg);
    exit(1);
}

int main(int argc, char *argv[])
{
    int sockfd, newsockfd, n, count = 0;
    socklen_t clilen;
    struct sockaddr_in serv_addr, cli_addr;
    char buffer[BUFSIZE];
    FILE *fp;

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
        error("ERROR opening socket");

    memset(&serv_addr, 0, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    serv_addr.sin_port = htons(PORT);

    if (bind(sockfd, (struct sockaddr *) &serv_addr,
             sizeof(serv_addr)) < 0)
        error("ERROR on binding");

    listen(sockfd, 5);

    clilen = sizeof(cli_addr);
    newsockfd = accept(sockfd,
                       (struct sockaddr *) &cli_addr,
                       &clilen);
    if (newsockfd < 0)
        error("ERROR on accept");

    fp = fopen("output.bin", "wb");
    if (fp == NULL)
        error("ERROR opening file");

    while ((n = recv(newsockfd, buffer, BUFSIZE, 0)) > 0) {
        count += fwrite(buffer, 1, n, fp);
        if (count < 0)
            error("ERROR writing to file");
    }

    fclose(fp);
    close(newsockfd);
    close(sockfd);
    return 0;
}

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
何在HP-UX通过TCPIP协议传输文件
本示例代码演示了如何通过TCP/IP协议在HP-UX系统下传输文件。实现方式是使用socket编程,创建客户端和服务端,通过套接字通信完成文件传输。附有详细的注释。客户端:#include &l
HP-UX 11i v3
C语言 socket编程
2023-05-26 13:30
wince下通过TCPIP协议传输数据
使用EVC开发的通过TCPIP协议来传输数据,包括了服务器端和客户端的源码
application/x-rar
0B
2020-05-15 07:15
.net通过TCPIP方式传输文件
本人最近做了一个TCPIP方式文件传输的例子,只需要IP地址,端口,存储地址就可以实现你想要的,后期还需要做文件的断点续传功能,已经测试成功,现没什么bug,希望能给大家提供帮助,觉得好了给我好评啊!
CS
0B
2020-05-13 21:54
TCPIP文件传输
纯TCP/IP文件传输,S端与C端代码。包含简易的登陆验证
RAR
0B
2019-01-09 05:21
何在HP-UX使用scp命令传输文件
本示例代码介绍了如何在HP-UX操作系统上使用scp命令传输文件,通过设置密钥可以避免每次输入密码。#!/bin/sh# 设置密钥,避免每次输入密码ssh-keygen -t rsa# 将公钥
HP-UX 11.31
OpenSSH
2023-05-24 01:38
基于TCPIP协议的VB点对点文件传输实例
两个基于TCPIP协议的VB点对点文件传输实例,都是想当简单的东西,相信VB的新手朋友一定会喜欢,在VB6下成功编译,两个程序都分为服务端和客户端,先启动服务端,再启动客户端,然后启动连接,就可以在服
RAR
0B
2020-05-29 06:34
通过TCP/IP协议实现文件传输
本示例演示了如何通过TCP/IP协议在客户端和服务器端之间实现文件传输。具体实现方式为客户端将需要传输的文件转换成二进制流,向服务器端发起请求,服务器端接收后解析文件内容并保存到指定位置。客户端代码
Python 3.8.2
PyCharm 2020.1
2023-04-24 07:00
TCPIP通讯协议.pptx
TCPIP通讯协议.pptx下载地址:https://dude6.com/q/a/4871655.html
何在Windows通过VMware安装Linux同时实现Linux与主机Windows文件传输
How to install Linux via VMware on Windows, and achieve both Linux and host (Windows) file transfer
DOC
0B
2019-06-27 18:10
何在java中使用SFTP协议安全的传输文件
主要介绍了如何在java中使用SFTP协议安全的传输文件,帮助大家更好的理解和使用JSch,感兴趣的朋友可以了解下
PDF
81KB
2020-11-09 01:41