winsock in c++
Posted: Sat Apr 18, 2009 11:21 am
Ok i have this code that allows a telnet client to connect to it through whom ever's ip its running on
what im trying to do is get the client (telnet) user to input a password and have the server check if that is correct and respond to the user if so or if not
heres the code
im not really sure how to get the input from the user
i tryed scanf() but to no avail it didnt work
and getline(cin,pass); doesnt work eithor
any help would be much apreciated
what im trying to do is get the client (telnet) user to input a password and have the server check if that is correct and respond to the user if so or if not
heres the code
Code: Select all
#include <winsock2.h>
#include <conio.h>
#include <iostream>
using namespace std;
UINT ServerThread(LPVOID);
int main(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
cout << "Press ESCAPE to terminate program\r\n";
switch (ServerThread(0)) {
case 1:
cout << "WSAStartup failed!" << endl;
nRetCode = 2;
case 2:
cout << "INVALID_PORT thrown." << endl;
nRetCode = 2;
case 3:
cout << "Cannot Bind to Socket." << endl;
nRetCode = 2;
case 4:
cout << "Can't start Listener." << endl;
nRetCode = 2;
}
return nRetCode;
}
UINT ServerThread(LPVOID pParam)
{
cout << "Starting up TCP server\r\n";
SOCKET server;
WSADATA wsaData;
sockaddr_in local;
int wsaret=WSAStartup(0x101,&wsaData);
if(wsaret!=0)
{
return 1;
}
local.sin_family=AF_INET;
local.sin_addr.s_addr=INADDR_ANY;
local.sin_port=htons((u_short)3000);
server=socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET)
{
return 2;
}
if(bind(server,(sockaddr*)&local,sizeof(local))!=0)
{
return 3;
}
if(listen(server,10)!=0)
{
return 4;
}
SOCKET client;
sockaddr_in from;
int fromlen=sizeof(from);
while(true)
{
char temp[512];
client=accept(server,
(struct sockaddr*)&from,&fromlen);
sprintf(temp,"welcome to my console\n");
login:
send(client,temp,strlen(temp),0);
cout << "Connection from " << inet_ntoa(from.sin_addr) <<"\r\n";
cout << "connection opened\n";
}
cout << "closing socket";
closesocket(server);
WSACleanup();
return 0;
}
i tryed scanf() but to no avail it didnt work
and getline(cin,pass); doesnt work eithor
any help would be much apreciated