Network Programming Using Internet Sockets

Socket网络编程略窥一二.. 网络原理课的课程设计

完全是看这篇文章学的, 貌似有中文版但是我点不进去
就不说两句了, 底层的东西, 全是细节, 非要概括的话可以引用原文第五章的小标题来描述这个过程

5.1. getaddrinfo()—Prepare to launch!
5.2. socket()—Get the File Descriptor!
5.3. bind()—What port am I on?
5.4. connect()—Hey, you!
5.5. listen()—Will somebody please call me?
5.6. accept()—”Thank you for calling port 3490.”
5.7. send() and recv()—Talk to me, baby!
5.8. sendto() and recvfrom()—Talk to me, DGRAM-style
5.9. close() and shutdown()—Get outta my face!

我的代码, 这是linux的, windows有点小不一样, 我不知道 :):
头文件..
[cpp]#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <stdlib.h>

#define MYPORT "2222"
#define BACKLOG 10[/cpp]

用Stream的:

(两个楞大的大括号…)
[cpp]
#include "commonheader.h"

int main() {
char function;
do {
printf("choose to be server(s) or client(c)?\n");
scanf("%c",&function);
} while(function!=’c’ && function!=’s’);

if(function==’s’) {
struct addrinfo hints,*localSv;
memset(&hints,0x00,sizeof(hints));
hints.ai_family=AF_UNSPEC;
hints.ai_socktype=SOCK_STREAM;
hints.ai_flags=AI_PASSIVE;

int rv;
rv=getaddrinfo(NULL,MYPORT,&hints,&localSv);
if(rv!=0) {
fprintf(stderr,"getaddinfo: %s\n",gai_strerror(rv));
return 1;
}

int sockLs;
struct addrinfo *p;
for( p=localSv;p;p=p->ai_next) {
if( (sockLs=socket(p->ai_family,p->ai_socktype,p->ai_protocol))==-1) {
perror("server: socket");
continue;
}

if(bind(sockLs,p->ai_addr, p->ai_addrlen)==-1) {
shutdown(sockLs,2);
perror("server: bind");
continue;
}

break;
}//why linked table?

if(p==NULL) {
perror("server: failed to bind");
return 2;
}

freeaddrinfo(localSv); //all done with this structure.. so bind() did nothing to struct addrinfo! only to socket(create a socket, and the int is only its number).

if (listen(sockLs,BACKLOG)==-1) {
perror("listen");
exit(1);
}

struct sockaddr_storage clientSockaddr;
int sockCon;
printf("Listening..\n");
socklen_t clientSockaddrSize=sizeof(clientSockaddr);
sockCon=accept(sockLs,(struct sockaddr*)&clientSockaddr,&clientSockaddrSize);
printf("Connected.\n");
shutdown(sockLs,2);

while(1) {
char buff[1024];
recv(sockCon,buff,sizeof(buff),0);
if(strcmp(buff,"exit")==0) {
printf("Client exited.\n");
break;
}
printf("%s\n",buff);
}

shutdown(sockCon,2);
}

if(function==’c’) {
printf("Sever IP:\n");
char svIp[16];
scanf("%s",svIp);

struct addrinfo hints,*remoteSv;
memset(&hints,0x00,sizeof(hints));
hints.ai_family=AF_UNSPEC;
hints.ai_socktype=SOCK_STREAM;
int rv=getaddrinfo(svIp,MYPORT,&hints,&remoteSv);
if(rv!=0) {
fprintf(stderr,"getaddinfo: %s\n",gai_strerror(rv));
return 1;
}

int sockCl;
struct addrinfo *p;
for(p=remoteSv;p;p=p->ai_next) {
if( (sockCl=socket(p->ai_family,p->ai_socktype,p->ai_protocol))==-1) {
perror("server: socket");
continue;
}

if(connect(sockCl,p->ai_addr,p->ai_addrlen)==-1) {
shutdown(sockCl,2);
printf("server: connect");
continue;
}

break;
}

if(p==NULL) {
perror("server:failed to setup");
return 2;
}

freeaddrinfo(remoteSv);

printf("connected.\n");

while(1) {
char buff[1024];
scanf("%s",buff);
send(sockCl,buff,sizeof(buff),0);
if(strcmp(buff,"exit")==0) {
printf("Exited.\n");
break;
}
}
shutdown(sockCl,2);
}

return 0;
}[/cpp]

用Datagram的:

[cpp]#include "commonheader.h"

int main() {
char function;
do {
printf("choose to be server(s) or client(c)?\n");
scanf("%c",&function);
} while(function!=’c’ && function!=’s’);

if(function==’s’) {
struct addrinfo hints,*localSv;
memset(&hints,0x00,sizeof(hints));
hints.ai_family=AF_UNSPEC;
hints.ai_socktype=SOCK_DGRAM;
hints.ai_flags=AI_PASSIVE;

int rv;
rv=getaddrinfo(NULL,MYPORT,&hints,&localSv);
if(rv!=0) {
fprintf(stderr,"getaddinfo: %s\n",gai_strerror(rv));
return 1;
}

int sockLs;
struct addrinfo *p;
for( p=localSv;p;p=p->ai_next) {
if( (sockLs=socket(p->ai_family,p->ai_socktype,p->ai_protocol))==-1) {
perror("server: socket");
continue;
}

if(bind(sockLs,p->ai_addr,p->ai_addrlen)==-1) {
shutdown(sockLs,2);
perror("server: bind");
}

break;
}//why linked table?

if(p==NULL) {
perror("server: failed to setup");
return 2;
}

freeaddrinfo(localSv); //all done with this structure.. so bind() did nothing to struct addrinfo! only to socket(create a socket, and the int is only its number).

/*
if (listen(sockLs,BACKLOG)==-1) {
perror("listen");
exit(1);
}

struct sockaddr_storage clientSockaddr;
int sockCon;
printf("Listening..\n");
socklen_t clientSockaddrSize=sizeof(clientSockaddr);
sockCon=accept(sockLs,(struct sockaddr*)&clientSockaddr,&clientSockaddrSize);
printf("Connected.\n");
shutdown(sockLs,2);
*/

while(1) {
char buff[1024];
struct sockaddr from;
socklen_t fromlen;
recvfrom(sockLs,buff,sizeof(buff),0,
&from,&fromlen);
if(strcmp(buff,"exit")==0) {
printf("Client exited.\n");
break;
}
printf("%s\n",buff);
}

// shutdown(sockCon,2);
}

if(function==’c’) {
printf("Sever IP:\n");
char svIp[100];
scanf("%s",svIp);

struct addrinfo hints,*remoteSv;
memset(&hints,0x00,sizeof(hints));
hints.ai_family=AF_UNSPEC;
hints.ai_socktype=SOCK_DGRAM;
int rv=getaddrinfo(svIp,MYPORT,&hints,&remoteSv);
if(rv!=0) {
fprintf(stderr,"getaddinfo: %s\n",gai_strerror(rv));
return 1;
}

int sockCl;
struct addrinfo *p;
for(p=remoteSv;p;p=p->ai_next) {
if( (sockCl=socket(p->ai_family,p->ai_socktype,p->ai_protocol))==-1) {
perror("server: socket");
continue;
}

/*
if(connect(sockCl,p->ai_addr,p->ai_addrlen)==-1) {
shutdown(sockCl,2);
printf("server: connect");
continue;
}
*/

break;
}

if(p==NULL) {
perror("server:failed to setup");
return 2;
}

// freeaddrinfo(remoteSv);

// printf("connected.\n");

while(1) {
char buff[1024];
scanf("%s",buff);
sendto(sockCl,buff,sizeof(buff),0,
p->ai_addr,p->ai_addrlen);
if(strcmp(buff,"exit")==0) {
printf("Exited.\n");
break;
}
}
shutdown(sockCl,2);
}

return 0;
}[/cpp]

3 thoughts on “Network Programming Using Internet Sockets

  1. bokepasia.cc

    World larest natural breastsPartkerizing chemical
    dicksCollege females whoo want bbig penisesSex oon hiip abductin machineHitomi kakawa nudeSpenfer scott sey picsBoy celeberties nakjed nakedGeorge washingtoon xxxKy
    vaginalTerrrier puppy pees iin crateMalaysian seex
    personalsFiinn carter titsMan’s entirre in vaginaShock’s sock strdip
    feet tsen boy’sAsian escort london excclusive videoRogin clarke gay rightsVanneswa hughens nakked picturesShockspott fucking macgine videosWomsn boxinng
    breasts titsHardcire paintingNtural joannna biig bopobs videosDurfh dick und dunnAleex burbln gayWeet matuer pussy
    videoBreann mcgregor naoed videosWatgch anql destructioin videos freeFucking ladTeascher ggive student bblow jobClitiris rubbing gerjan slutloadBangg
    blonee fetih gangPeni totrtureFreee orgasm downloadsShort hhair matture ladySuttln college off learnming ffor adultsAngrles loss porn starKarman nudeCommunityy lswn peesing typePictyres
    oof frican american penisSann duego seniorr addult caare facilitiesFucck
    teewn whiteBuxolm milfsFreee porn wwb sitesFrehch nudee mmovies tubeAshlewy wwe superstar iin playbvoy nakedNaled mmen jockstrap photoTakes herr firxt blqck
    cockFree seex vedios clipsSexy srority gurls strippingPictures oof oold matue
    omen ukTennnis assesSexx shop london rosd derbyAdjlt nude womkan matureGoolf bslls in tthe assSaiklor mooin henhtai picsKarhy bates xxxMature allhairy
    bbwSocer xxxThhe swingung noteCaries suoes ssex andd the citty movieBabby erection sexAsss free pictuure roundHarddcore por vijdeo freeComm muviess ssex teluguSisters fucking bfothers photosVifgin weddin night storiesRhijanna annd chros
    btown ssex videoE hentai l m p sShizune entai dojiinshiFreee xxxx bangladeshi vedfio downloadVintahe pinbacck pinsThaii sputs movbie clip34dd
    ttit movieCheerlleader fuck teamMavericks stripPoonyride femdomFemale
    orgasm stickyVirtual ssex with kirra konor dvdAnaal seex with grannyFrree esi lovong wiives ssex
    storiesAsikan bodybuildersOvl guiide indiann pornBeautiful nude women teachersLooaestrife penisBosss seeduces
    wife fuck40somethingmag milf georgetteMy wite with a dickEbony twens annd older
    mmen pornBenny hill xxxRealy whiye eens nakedTits pon xxx pussyMouse oly games xxxSexual relations wth
    a virginTeeen chinese porn tubeBlck women naed freeClos gayy mman naked upRough anjal sex moviesTumb wrestlikng federatioln toyInndia yiung seex trrade ofvd9wuaptfpqjuqzjsp

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *