⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp.c

📁 用于Linux下的网络视频。包里包括了接收端和发送端。大部份是从Spcaview修改过来的
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <stdint.h>
#include "tcp.h"
int open_clientsock(char * address, int port)
{
 struct sockaddr_in servadr;
 int client_handle;
 
 /* Create a new socket */
 if ((client_handle = socket (AF_INET, SOCK_STREAM, 0)) == -1)
    exit(1);
 
/* Now set the server address struct and connect client socket to the port*/
 initaddr (&servadr,address,port);
 
 if (connect(client_handle,(struct sockaddr *) &servadr,
       sizeof (struct sockaddr)) == -1)
     exit(1);
 return client_handle;
}
static void
initaddr (struct sockaddr_in *servadrr,char *address,int port)
{ 
int adrsize = 0;
    if(address){
        adrsize = strlen(address);
        if(adrsize < 7 || adrsize > 15)
            exit(1);
        servadrr->sin_addr.s_addr = inet_addr(address);
    } else {
        servadrr->sin_addr.s_addr = INADDR_ANY;
    }
        
    servadrr->sin_family = AF_INET;
  servadrr->sin_port = htons (port);
   memset (&(servadrr->sin_zero), '\0', 8);
    
}
 
int 
reportip( char *src, char *ip, unsigned short *port)
{
    int j,k,done,ipdone,nbpt=0;
    char *AdIpPort= src;
    char *AdIp = ip;
    char Ports[] = "65536";
    j=0;k=0;done=0;ipdone=0;
            while(j < 22){
            switch (AdIpPort[j]){
            case '\0':
                done =1;
                break;
            case '.':
                nbpt++;
                if(nbpt > 3){
                printf("error fatal \n");
                return -1;
                }
            break; 
            case ':':
                k = 0; ipdone = 1;
                AdIp[j++] ='\0';
            break;
            default:
                
            break;
            }
            if (ipdone)
                    Ports[k++]=AdIpPort[j++];
                else
                    AdIp[k++]=AdIpPort[j++];
            if(done) break;
            }
            *port = (unsigned short) atoi (Ports);
            //printf ("Ip %s Port %s \n",AdIp,Ports);
            if(*port < 1024) {
            printf("ERROR Set default port to 7070 \n");
            *port = 7070;
            }
return 0;
}
 
 
void
close_sock (int sockhandle)
{
 close (sockhandle);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -