linux c 用套接字实现二进制文件的发送(学习记录)

linux c 编程学习记录

程序说明:基于linux c 网络编程的流式套接字,实现二进制文件的发送和复制创建

Service端

#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <strings.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#define PORT 33333
#define BUFFSIZE 16610
int main(void)
{
        int sfd, nsfd;
        struct sockaddr_in st;
        struct sockaddr_in c_st;
        char cip[20];
        unsigned int cport;
        int len;
        int ret;
        int opt=1;
        FILE *fp;
        pid_t pid;
        char buf[BUFFSIZE];
        char rbuf[BUFFSIZE];
        len = sizeof(struct sockaddr_in);
        sfd = socket( AF_INET, SOCK_STREAM, 0);   //创建套接字
        bzero( &st, len);
        st.sin_family = AF_INET;
                st.sin_port = htons(PORT);
        st.sin_addr.s_addr = htonl(INADDR_ANY);
        setsockopt( sfd, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof(opt));
        ret = bind( sfd, (struct sockaddr *)&st, len );  //绑定套接字
        ret = listen( sfd, 64 );    //建立侦听
                printf("服务端等待接受客户端的连接......\n");
                nsfd = accept( sfd, (struct sockaddr *)&c_st, &len);
                strcpy(cip, inet_ntoa(c_st.sin_addr));
                cport = ntohs(c_st.sin_port);
                ret = read( nsfd, buf, BUFFSIZE);   //接收数据
                buf[ret]=0x0;
                printf("接收的数据为:%s\n",buf);
                fp=fopen("ios","wb");
                fwrite(buf,16610,1,fp);
                close(nsfd);
                return 0;
}
    

Client端

#include <stdio.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <strings.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#define PORT 33333
#define BUFSIZE 16610
int main(void)
{
        int sfd;
        int ret;
        int len;
        char msg[BUFSIZE];
        char buf[BUFSIZE];
        struct sockaddr_in sst;
        FILE *fp;
        char Mess[16610];
        len = sizeof( struct sockaddr_in);

        sfd = socket( AF_INET, SOCK_STREAM, 0);   //创建套接字
        if( sfd<0)
        {
                perror("socket");
                return -1;
        }
        bzero( &sst, len);
               sst.sin_family = AF_INET;
        sst.sin_port = htons(PORT);
        sst.sin_addr.s_addr = inet_addr("192.168.36.129");
        ret = connect( sfd, (struct sockaddr *)&sst, len );  //连接服务器端
        fp=fopen("like","rb");
        fread(Mess,16610,1,fp);
        write( sfd, Mess, sizeof(Mess));
        close(sfd);
        return 0;
}
只做记录学习
(qq:九七二四三九三二九,有不懂的可以问我,一起学习)

猜你喜欢

转载自blog.csdn.net/weixin_45005209/article/details/106696250