include
include
include
include
include”sockLib.h”
include “stdio.h”
include “stdlib.h”
include “string.h”
int sockFd;
int newSockFd;
void tcpXtask (void)
{
struct sockaddr_in saddr,caddr;
int bufLen=1500;
char *buffer;
int addrLen;
int nRead=0;
bzero ((char *) &saddr, sizeof (saddr));
bzero ((char *) &caddr, sizeof (caddr));
buffer=malloc(bufLen);
if(bufLen==NULL)
{
return;
}
if ((sockFd = socket (AF_INET, SOCK_STREAM, 0)) < 0)
{
free (buffer);
return;
}
saddr.sin_family = AF_INET;
saddr.sin_port = htons (50000);
saddr.sin_addr.s_addr=INADDR_ANY;
if(bind(sockFd, (struct sockaddr *)&saddr, sizeof(saddr))<0)
{
free (buffer);
return;
}
if(setsockopt(sockFd, SOL_SOCKET, SO_RCVBUF,(char *) &bufLen, sizeof (bufLen)) < 0)
{
printf ("setsockopt SO_RCVBUF failed\n");
free (buffer);
return;
}
if (setsockopt (sockFd, SOL_SOCKET, SO_SNDBUF, (void *)&bufLen,
sizeof (bufLen)) < 0)
{
printf ("setsockopt SO_SNDBUF failed\n");
free (buffer);
return;
}
if (listen (sockFd, 5) < 0)
{
printf ("listen failed\n");
close (sockFd);
free (buffer);
return;
}
addrLen=sizeof(caddr);
while ((newSockFd = accept(sockFd, (struct sockaddr *)&caddr, &addrLen)) == -1);
printf("new socket connected\n");
if(setsockopt(newSockFd, SOL_SOCKET, SO_RCVBUF,(char *) &bufLen, sizeof (bufLen)) < 0)
{
printf ("setsockopt SO_RCVBUF failed\n");
free (buffer);
return;
}
if (setsockopt (newSockFd, SOL_SOCKET, SO_SNDBUF, (void *)&bufLen,
sizeof (bufLen)) < 0)
{
printf ("setsockopt SO_SNDBUF failed\n");
free (buffer);
return;
}
while(1)
{
nRead=recv(newSockFd,buffer,1500,0);
if(nRead<=0)
{
printf("Read socket data error\n");
}
else
{
unsigned int i;
for(i=0;i<20;i++)
{
buffer[i]=buffer[i]+1;
}
send(newSockFd,buffer,50,0);
}
}
}