多くの irc は Linux 用です。私用ではありません。
独自の単純な irc クライアントを作成しようとしています。ただし、「/MOTD コマンドの終了」を待つ必要があると思います。チャンネルに参加する前に。
私のコードを見てください:
int connect_serv(char* server, int port, char* nick, char* channel){
WSADATA wsaData; /* winsock stuff, linux/unix/*bsd users need not worry about this */
if (WSAStartup(MAKEWORD(1, 1), &wsaData)) /* more winsock rubbish */
{
printf("Failed to initialise winsock!\n");
}
HOSTENT* resolv;
sockaddr_in rem;
irc_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (irc_socket==INVALID_SOCKET)
{
printf("Socket nie smiga: %d\n", WSAGetLastError());
return 1;
}
resolv=gethostbyname(server);
if (!resolv)
{
closesocket(irc_socket);
return 1;
}
memcpy(&rem.sin_addr, resolv->h_addr, 4);
rem.sin_family=AF_INET;
rem.sin_port=htons(port);
if (connect(irc_socket, (const sockaddr*)&rem, sizeof(rem))==SOCKET_ERROR)
{
printf("Failed to connect: %d\n", WSAGetLastError());
closesocket(irc_socket);
return 1;
}
send_cmd("NICK "+char_to_str(nick),irc_socket);
send_cmd("USER "+char_to_str(nick)+" . . :"+char_to_str(nick),irc_socket);
send_cmd("JOIN "+char_to_str(channel),irc_socket);
}
void send_cmd(string cmd,int fpsocket){
char sendmsg[128];
sprintf(sendmsg,"%s\r\n",cmd.c_str());
send( fpsocket, sendmsg, strlen(sendmsg),0 );
}