0

Well I'm learning the irc protocol by coding a Console client.
The client appears to connect to server, set name and nick, But won't join the channel it just says "451 you have not registered".

Here's the code Sorry for any lame formatting ect. I'm kinda new to cpp:

#pragma comment(lib, "wsock32.lib ")
   #include <windows.h>
   #include <iostream>
   #include <stdio.h>
   #include <string.h>

      int main(){
      char buf1[1200];
	  char nick[] = "iarkeytest";
      char text1[4096];
	  char buf[4096];
	  int n;

      WSAData wsdata;
      WORD wsver=MAKEWORD(2, 0);
      int nret=WSAStartup(wsver, &wsdata);
      if(nret != 0){
      std::cout<<"Startup failed, error code: "<<WSAGetLastError();
      WSACleanup();
      return -1;
      }
       
      printf("Init success\n");
      SOCKET kSock=socket(AF_INET, SOCK_STREAM, 0);
      if(kSock == INVALID_SOCKET){
      printf("Socket init failed");
      return -1;
      }
       
      printf("Socket initialized\n");
      sockaddr_in sin;
      sin.sin_port=htons(6667);
      sin.sin_addr.s_addr=inet_addr("127.0.0.1");
      sin.sin_family=AF_INET;
      if(connect(kSock,(sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR){
      std::cout<<"Connect failed, error: "<<WSAGetLastError();
      WSACleanup();
      return -1;
      }
       
      printf("Connection successful!\n\n");
     
	  n = recv(kSock, buf1, sizeof(buf1)-1, 0);
      if ( n > 0 ) {
      buf1[n] = '\0';
      printf("%s\n",buf1);
      } else {
		  printf("No Data\n");
      }

      memset(text1,0,255);
      sprintf(text1, "NICK %s\r\nUSER %s 0 * :%s\r\n\0", nick, nick, nick);
      send(kSock, text1, strlen(text1), 0);
      printf(">>Client: %s\n",text1);

	   Sleep(100);

      memset(text1,0,255);
	  sprintf(text1,"JOIN #lobby\r\n");
      send(kSock, text1, sizeof(text1), 0);
      printf(">>Client: %s\n",text1);

      memset(text1,0,255);
      sprintf(text1,"PRIVMSG #lobby :Test Message\r\n");
      send(kSock,text1,sizeof(text1),0);
      printf(">>Client: %s\n",text1);


   while (1) {
   memset(buf,0,255);
   recv( kSock,buf,255,0);
	
   if ( strstr(buf,"PING") != 0 ) {
   printf("Server sent PING\n");
   send(kSock,"PONG :\r\n",6,0);
   printf("Replying with PONG\n");
   }
	
 memset(buf,0,255);
   }
}
2
Contributors
2
Replies
3
Views
7 Years
Discussion Span
Last Post by JZandi
-2

plz answer me now!

Votes + Comments
Wrong forum, off topic, and obnoxious... if I could give double -rep I would
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.