📄 tcp.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 + -