分类
TCP
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>#include <unistd.h>#include <stdio.h>
#define SERVER_PORT 8881
#define BACKLOG 10
int main(int argv, char** argc)
{int iSocketServer;int iSocketClient;int iRet;int iAddrLen;unsigned char ucReceBuf[1000];int iRevcLen;int iClientNum=-1;struct sockaddr_in tSocketServerAddr;struct sockaddr_in tSocketClientAddr;iSocketServer = socket(AF_INET, SOCK_STREAM, 0);if(iSocketServer==-1){printf("socket error\n");return -1;}tSocketServerAddr.sin_family=AF_INET;tSocketServerAddr.sin_port=htons(SERVER_PORT);tSocketServerAddr.sin_addr.s_addr=INADDR_ANY;memset(tSocketServerAddr.sin_zero,0,8);iRet = bind(iSocketServer, (const struct sockaddr *)&tSocketServerAddr, sizeof(struct sockaddr));if(iRet==-1){printf("bind error\n");return -1; }iRet=listen(iSocketServer,BACKLOG);if(iRet==-1){printf("listen error\n");return -1; } while(1){iAddrLen=sizeof(struct sockaddr);iSocketClient=accept(iSocketServer, (struct sockaddr *)&tSocketClientAddr, &iAddrLen);if(iSocketClient!=-1){iClientNum++;printf("Get connect from client %d %s\n",iClientNum,inet_ntoa(tSocketClientAddr.sin_addr));if(!fork()){while(1){iRevcLen=recv(iSocketClient, ucReceBuf,999,0);if(iRevcLen<=0){close(iSocketClient);return -1;}else{ucReceBuf[iRevcLen]='\0';printf("Get msg from client %d %s\n",iClientNum, ucReceBuf);}}}}}close(iSocketServer);return 0;
}
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#define SERVER_PORT 8881
#define BACKLOG 10int main(int argv, char** argc)
{int iSocketServer;int iSocketClient;int iRet;unsigned char ucReceBuf[1000];struct sockaddr_in tSocketServerAddr;struct sockaddr_in tSocketClientAddr; int isendlen;if(argv!=2){printf("usage\n");return -1;}iSocketClient=socket(AF_INET, SOCK_STREAM, 0);tSocketServerAddr.sin_family=AF_INET;tSocketServerAddr.sin_port=htons(SERVER_PORT);inet_aton(argc[1], &tSocketServerAddr.sin_addr);memset(tSocketServerAddr.sin_zero,0,8);iRet= connect(iSocketClient, (const struct sockaddr *)&tSocketServerAddr, sizeof(struct sockaddr));while(1){if(fgets(ucReceBuf,999,stdin)){isendlen=send(iSocketClient,ucReceBuf,strlen(ucReceBuf),0);if(isendlen<=0){return -1;}}}return 0;
}
UDP
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>#include <unistd.h>#include <stdio.h>
#define SERVER_PORT 8881
#define BACKLOG 10
int main(int argv, char** argc)
{int iSocketServer;int iSocketClient;int iRet;int iAddrLen;unsigned char ucReceBuf[1000];int iRevcLen;int iClientNum=-1;struct sockaddr_in tSocketServerAddr;struct sockaddr_in tSocketClientAddr;iSocketServer = socket(AF_INET, SOCK_DGRAM, 0);if(iSocketServer==-1){printf("socket error\n");return -1;}tSocketServerAddr.sin_family=AF_INET;tSocketServerAddr.sin_port=htons(SERVER_PORT);tSocketServerAddr.sin_addr.s_addr=INADDR_ANY;memset(tSocketServerAddr.sin_zero,0,8);iRet = bind(iSocketServer, (const struct sockaddr *)&tSocketServerAddr, sizeof(struct sockaddr));if(iRet==-1){printf("bind error\n");return -1; }while(1){iAddrLen=sizeof(struct sockaddr);iRevcLen=recvfrom(iSocketServer, ucReceBuf,999,0,(struct sockaddr*)&tSocketClientAddr,&iAddrLen);if(iRevcLen>0){ucReceBuf[iRevcLen]='\0';printf("get msg from %s %s\n",inet_ntoa(tSocketClientAddr.sin_addr),ucReceBuf);}}close(iSocketServer);return 0;
}
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#define SERVER_PORT 8881
#define BACKLOG 10int main(int argv, char** argc)
{int iSocketServer;int iSocketClient;int iRet;unsigned char ucReceBuf[1000];struct sockaddr_in tSocketServerAddr;struct sockaddr_in tSocketClientAddr; int isendlen;if(argv!=2){printf("usage\n");return -1;}iSocketClient=socket(AF_INET, SOCK_DGRAM, 0);tSocketServerAddr.sin_family=AF_INET;tSocketServerAddr.sin_port=htons(SERVER_PORT);inet_aton(argc[1], &tSocketServerAddr.sin_addr);memset(tSocketServerAddr.sin_zero,0,8);while(1){if(fgets(ucReceBuf,999,stdin)){isendlen=sendto(iSocketClient,ucReceBuf,strlen(ucReceBuf),0,(const struct sockaddr *)&tSocketServerAddr,sizeof(struct sockaddr));if(isendlen<=0){return -1;}}}return 0;
}