?? 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 + -