以下のように実装したのですが、サーバーに接続出来ていないようでした。
各メンバ関数からのエラーも出ていないようなので行き詰ってしまいました。
どこがおかしいのでしょう?
それとも根本からおかしいのでしょうか?
教えていただければ幸いです。
#include <stdio.h>
#include <conio.h>
#include <winsock2.h>
class TcpClient01 {
public:
WSADATA wsaData;
struct sockaddr_in server;
SOCKET sock;
char port[10],target[2000];
int CreateSocket(){
sock= socket(AF_INET,SOCK_STREAM,0);
if (sock == INVALID_SOCKET)return -1;
}
//今回テストなので第2引数は無視されます
int SetSockAddr(char *port,char *target){
int nport;
nport=atoi(port);
if(nport==0)return -1;
server.sin_family = AF_INET;
server.sin_port = htons(nport);
server.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
}
int SockConnect(){
connect(sock, (struct sockaddr *)&server, sizeof(server));
}
int SockRecv(char *buf,int Flag){
int ret;
ret=recv(sock,buf,sizeof(buf),Flag);
return ret;
}
int SockSend(char *buf,int Flag){
int ret;
ret=send(sock,buf,sizeof(buf),Flag);
return ret;
}
int DestroySock(){
closesocket(sock);
}
} TcpClient01 ;
int main(void)
{
TcpClient01 client;
char buf[4024];
int ret,i=0;
// winsock2の初期化
if (WSAStartup(MAKEWORD(2,0), &wsaData))
{ printf("winsock の初期化に失敗しました\n");
getch();
return 1;
}
//メンバ関数のエラーを確認
if(client.CreateSocket()==-1)printf("Error1");
if(client.SetSockAddr("5555","localhost")==-1)printf("Error2");
if(client.SockConnect()==-1)printf("Error3");
for(;;){
memset(buf,'\0',sizeof(buf));
client.SockRecv(buf,0);
printf("受信メッセージ→%s\n",buf);
memset(buf,'\0',sizeof(buf));
printf("送信メッセージ→");
gets(buf);
client.SockSend(buf,0);
}
client.Destroy();
// winsock2の終了処理
WSACleanup();
getch();
return 0;
}