server.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define BUF_SIZE 100
int main()
{
//create socket
int iServer = socket(AF_INET, SOCK_STREAM, 0);
if (-1 == iServer)
{
return -1;
}
printf("create socket ok\r\n");
//bind
struct sockaddr_in stServer;
memset(&stServer, 0, sizeof(struct sockaddr_in));
stServer.sin_family = AF_INET;
stServer.sin_port = htons(8888);
//stServer.sin_addr.s_addr = inet_addr("0.0.0.0");
stServer.sin_addr.s_addr = INADDR_ANY;
int iRet = bind(iServer, (struct sockaddr *)&stServer, sizeof(struct sockaddr_in));
if (-1 == iRet)
{
return -1;
}
printf("bind ok\r\n");
//listen
iRet = listen(iServer, 5);
if (-1 == iRet)
{
return -1;
}
printf("listen ok\r\n");
//accept
struct sockaddr_in stClient;
socklen_t tLen = sizeof(struct sockaddr_in);
char buf[BUF_SIZE];
while(1)
{
memset(&stClient, 0, sizeof(struct sockaddr_in));
memset(buf, 0, BUF_SIZE);
int iClient = accept(iServer, (struct sockaddr *)&stClient, &tLen);
if (iClient < 0)
{
continue;
}
printf("accept ok %d\r\n", iClient);
//recv send
iRet = recv(iClient, buf, BUF_SIZE, 0);
printf("recv %d\r\n", iRet);
if (iRet > 0)
{
printf("%s\r\n", buf);
send(iClient, buf, BUF_SIZE, 0);
}
close(iClient);
}
//close
close(iServer);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define BUF_SIZE 100
int main()
{
//create socket
int iClient = socket(AF_INET, SOCK_STREAM, 0);
if (-1 == iClient)
{
return -1;
}
printf("socket ok\r\n");
//connect
struct sockaddr_in stServer;
memset(&stServer, 0, sizeof(struct sockaddr_in));
stServer.sin_family = AF_INET;
stServer.sin_port = htons(8888);
stServer.sin_addr.s_addr = inet_addr("127.0.0.1");
int iRet = connect(iClient, (struct sockaddr *)&stServer, sizeof(struct sockaddr));
if (-1 == iRet)
{
perror("connect");
return -1;
}
printf("connect ok\r\n");
//send
char buf[BUF_SIZE] = {0};
strcpy(buf, "hehexixi");
send(iClient, buf, BUF_SIZE, 0);
memset(buf, 0, BUF_SIZE);
//recv
iRet = recv(iClient, buf, BUF_SIZE, 0);
printf("%d %s\r\n", iRet, buf);
return 0;
}