TCP transmission problem



Dear ALL:
I want to write TCP server/client programming, but in my server
programming running not receive client information. please help solve
my problem thanks

server code
#include<iostream.h>
#include<winsock.h>
#include<windows.h>
#include<stdio.h>
#pragma comment(lib, "WSock32.lib")
BOOL InitWinsock();
#define SIZE 1024


int main(void)
{

int socket1;

InitWinsock();
struct sockaddr_in serv_addr;
struct sockaddr_in cli_addr;
int data_len=sizeof(cli_addr);
int recvdata;
int retval;
char buffer[SIZE];

// open a TCP socket
socket1=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
// bind our local address so that the client can sent to us
serv_addr.sin_family=AF_INET;
serv_addr.sin_port = htons(16533);
serv_addr.sin_addr.s_addr = INADDR_ANY; // 本機IP address

if(bind(socket1,(struct sockaddr*)&serv_addr,sizeof serv_addr)<0)
{
cout<<"bind error"<<endl;
exit(1);
}
/* Mark the socket so it will incoming connections */
if (listen(socket1, 5)< 0)
{
cout<<"listen error"<<endl;
exit(2);
}
cout<<"server is success"<<endl;
while(1)
{

cout<<"waiting for message form other"<<endl;

/* Wait for a client to connect */
if (accept(socket1, (struct sockaddr *) &cli_addr, &data_len)< 0)
{
cout<<"accept error"<<endl;
exit(3);
}

/* Receive message from client */
recvdata = recv(socket1, buffer,1024, 0);

/*if (recvdata <0)
{
cout<<"recv error"<<endl;
exit(4);
}*/
//recv(socket1, buffer, SIZE, 0);

/*if (recv(socket1, buffer, SIZE, 0)!= SOCKET_ERROR)
{
printf("recv data %s\n", buffer);
send(socket1, buffer, SIZE, 0);
}*/

while (recvdata > 0)
{
retval = send(socket1, buffer, recvdata, 0);
if (retval != recvdata)
{
cout<<"send error"<<endl;
exit(5);
}

// See if there's more
recvdata = recv(socket1, buffer, 1024, 0);
if (recvdata < 0)
{
cout<<"recv error"<<endl;
exit(6);
}
}

cout<<endl;
Sleep(500);
}
closesocket(socket1);
WSACleanup();
//cout<<"server is success"<<endl;
//return 0;

}
BOOL InitWinsock() {

int Error;
WORD VersionRequested;
WSADATA WsaData;
VersionRequested=MAKEWORD(2,2);
Error=WSAStartup(VersionRequested,&WsaData);
if(Error!=0)
{
return FALSE;
}
else
{
if(LOBYTE(WsaData.wVersion)!=2||HIBYTE(WsaData.wHighVersion)!=2)
{
WSACleanup();
return FALSE;
}

}
//cout<<"eee"<<endl;
return TRUE;
}

client code
#include<iostream.h>
#include<winsock.h>
#include<windows.h>
#include<stdio.h>
#pragma comment(lib, "WSock32.lib")
#define SIZE 1024
//#define SERV_UDP_PORT 1000
//#define SERV_UDP_ADDR "10.110.138.64"
BOOL InitWinsock();
int main(void)
{


SOCKET socket1;

InitWinsock();
struct sockaddr_in serv_addr;
struct sockaddr_in cli_addr;
int data_len=sizeof(cli_addr);
int retval;
int clientConnSock;
char buffer[SIZE]="\0";

serv_addr.sin_family=AF_INET;
serv_addr.sin_port = htons(16533);
serv_addr.sin_addr.s_addr = inet_addr("10.110.138.201"); // server
IP address

//open TCP socket
socket1 = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (socket1< 0) {
cout<<"socket init error";
exit(2);
}

//connect to server
retval = connect(socket1, (struct sockaddr *) &serv_addr,
sizeof(serv_addr));
if (retval < 0)
{
cout<<"connect error";
exit(3);
}
//recv(socket1, buffer, sizeof(buffer),0);
//printf("%s",buffer);
while(1)
{

cout<<"Please input message"<<endl;
scanf("%s",buffer);
if (strcmp(buffer,"bye")==0)
break;
if(send(socket1, buffer, strlen(buffer), 0)<0)
{
cout<<"send error"<<endl;
exit(4);
}
/*if(send(socket1, buffer, 1024, 0)!=SOCKET_ERROR)
{
cout<<"data transmission......."<<endl;
if(recv(socket1, buffer, 1024, 0)!=SOCKET_ERROR);
printf("rece from server: %s\n",buffer);
}*/
//send(socket1, buffer, sizeof(buffer),0);
printf("rece from server: %s\n",buffer);
cout<<endl;
Sleep(500);
}
closesocket(socket1);


}
BOOL InitWinsock()
{

int Error;
WORD VersionRequested;
WSADATA WsaData;
VersionRequested=MAKEWORD(2,2);
Error=WSAStartup(VersionRequested,&WsaData);
if(Error!=0)
{
return FALSE;
}
else
{
if(LOBYTE(WsaData.wVersion)!=2||HIBYTE(WsaData.wHighVersion)!=2)
{
WSACleanup();
return FALSE;
}

}
//cout<<"eee"<<endl;
return TRUE;
}

.



Relevant Pages

  • [UNIX] Multiple Vulnerabilities in Citadel/UX
    ... could allow complete control over a vulnerable server. ... Citadel server as can be seen by this simplistic code snippet: ... configuration buffers, leading to the possibility of carrying out a buffer ... int connect_to_host; ...
    (Securiteam)
  • Re: Socket switch delay
    ... both at the client and at the server (and why ... would you set the send buffer size to zero on a non-overlapped ... One glaring error is your client does ... So when you use a single socket, ...
    (microsoft.public.win32.programmer.networks)
  • [NT] Dark Age of Camelot Man-In-The-Middle
    ... use of RSA public key cryptography and an RC4 based symmetric algorithm. ... Seeing the imminent release of code for cracking the game client (which ... At the beginning of each TCP session, the server sends a 1536 bit RSA ... void bytes_out(unsigned char *data, int len) ...
    (Securiteam)
  • echo client using threads
    ... pollwhile client is written using threads. ... server recvs some characters from a client and then echoes the ... int main ... exit(EXIT_FAILURE); ...
    (comp.unix.programmer)
  • Re: Problem with SslStream when using Windows Vista
    ... The code for the server & client follow. ... private int _port = 0; ... // SslStream using the client's network stream. ...
    (microsoft.public.dotnet.framework)