- 论坛徽章:
- 0
|
#ifndef _ALL_H
#define _ALL_H
// ANSC C/C++
#include
#include
#include
#include
#include
// linux
#include
#include
#include
#include
#include
#include
#include
#include // time
#include
#include
#include
// micro
//#define OutErrStr(info) (printf("Error : %s\n", info))
//#define OutErrInt(info) (printf("Error : %d\n", info))
#define BUFF_SIZE 1024 * 1
#endif
// tcpsrv.c
#include "all.h"
static char chBuff[BUFF_SIZE] = {0};
// function, start TCP server
static bool startServer(int argc, char *argv[])
{
printf("Run ...\n");
while (argc nNewSocket)
{
nMax = nSocket;
}
else
{
nMax = nNewSocket;
}
switch (select(nMax + 1, &fdRead, &fdWrite, NULL, &timeout))
{
case -1 : // error
printf("call select() function failure\n");
break;
case 0 : // time out
break;
default :
if (FD_ISSET(nSocket, &fdRead))
{
// 接受一个连接
unsigned int uLen = sizeof(struct sockaddr_in);
if (-1 == (nNewSocket = accept(nSocket, (struct sockaddr *)&ClientAddr, &uLen)))
{
//printf("Warning: accept connecting failed, continue ......\n");
//printf("-----------------------------------\n\n");
//continue;
//return false;
}
else
{
printf("Accept one connecting from IP [port] : %s [%d]\n",\
inet_ntoa(ClientAddr.sin_addr), ntohs(ClientAddr.sin_port));
}
}
if (FD_ISSET(nNewSocket, &fdWrite))
{
// 在新的socket上接收数据
if ( -1 == recv(nNewSocket, chBuff, sizeof(chBuff), 0) )
{
//printf("Warning: NewSocket riceive data failed. [errno = %d]\n", errno);
//printf("-----------------------------------\n\n");
}
else if (strlen(chBuff) > 0)
{
printf("Riceive data is [%d bytes]: %s\n", strlen(chBuff), chBuff);
memset(chBuff, 0, sizeof(chBuff));
//usleep(1000);
}
}
}
}
// *************************************************
if (nNewSocket)
{
close(nNewSocket);
}
if (nSocket)
{
close(nSocket);
}
return true;
}
/*
* Input: IP address, port
*/
int main(int argc, char *argv[])
{
if (startServer(argc, argv))
{
printf("Start TCP server OK\n");
}
return 0;
}
# tcpsv makefile
objets = main.o
rubbish = $(objets) tcp_server
tcp_server : main.o
g++ -g -o tcp_server main.o
main.o : main.c all.h
g++ -g -c main.c
.PHONY : clean
clean :
-rm $(rubbish)
# end makefile
// tcp client all.h
// wenxy created on 2005/04/12,AM
// All copyright reserved.
#ifndef _ALL_H
#define _ALL_H
// ANSC C/C++
#include
#include
#include
#include
// linux
#include
#include
#include
#include
#include
#include
#include
#include
#include
// micro
//#define OutErrStr(info) (printf("Error : %s\n", info))
//#define OutErrInt(info) (printf("Error : %d\n", info))
#define BUFF_SIZE 1024 * 1
#endif
// main.c, tcp client
#include "all.h"
//
char chBuff[BUFF_SIZE] = "This is clinet init data,\n这是初始化数据。\n";
// function
// connecting the TCP server
static bool StartClient(int argc, char *argv[])
{
while (argc
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26185/showart_1404124.html |
|