64,649
社区成员
发帖
与我相关
我的任务
分享
//新建socket
sd = socket (AF_INET, SOCK_STREAM, 0);
memset (&sa, '\0', sizeof(sa));
//设置服务端IP地址、和端口
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = dwIP;
sa.sin_port = htons(8443);
//连接服务器端并接收服务器消息的线程函数
void ClientThreadProc(void* void_parm)
{
WSADATA wsaData;
int err;
int sd;
struct sockaddr_in sa;
SSL* ssl;
X509* server_cert;
char* str;
char buffer [8912];
int maxFd;
fd_set writeFds, readFds, excFds;
DWORD dwIP;
dwIP = (DWORD)void_parm;
//char *msg = (char *)malloc(128);
char msg[128];
//初始化windows socket
if (WSAStartup(MAKEWORD(2, 2), &wsaData))
{
return;
}
//新建socket
sd = socket (AF_INET, SOCK_STREAM, 0);
memset (&sa, '\0', sizeof(sa));
//设置服务端IP地址、和端口
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = dwIP;
sa.sin_port = htons(8443);
//连接服务器
err = connect(sd, (struct sockaddr*) &sa,sizeof(sa));
if(err < 0)
{
// char *msg = (char *)malloc(128);
strcpy(msg,"连接服务器失败!");
SendMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_STATE_MSG,sd,(long )msg);
return;
}
strcpy(msg,"SSL开始握手!");
SendMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_STATE_MSG,sd,(long )msg);
//新建SSL句柄
ssl = SSL_new (ctx);
//设置socket句柄到SSL句柄
SSL_set_fd (ssl, sd);
//SSL连接
err = SSL_connect (ssl);
if(err != 1)
{
// char *msg = (char *)malloc(128);
strcpy(msg,"SSL连接服务器失败!");
SendMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_STATE_MSG,sd,(long )msg);
return;
}
//启动服务线程函数
void StartServer(void* void_parm)
{
WSADATA wsaData;
int err;
int listen_sd;
unsigned long idThread;
struct sockaddr_in sa_serv;
HANDLE hd;
int port = (int) void_parm;
//初始化windows socket
if (WSAStartup(MAKEWORD(2, 2), &wsaData))
{
char *msg = (char *)malloc(128);
strcpy(msg,"初始化Socket失败!");
SendMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_STATE_MSG,0,(long )msg);
return;
}
//新建socket句柄
listen_sd = socket (AF_INET, SOCK_STREAM, 0);
//初始化sockaddr_in结构体,设置TCP协议和端口
memset (&sa_serv, '\0', sizeof(sa_serv));
sa_serv.sin_family = AF_INET;
sa_serv.sin_addr.s_addr = INADDR_ANY;
sa_serv.sin_port = htons (port);
//绑定端口
err = bind(listen_sd, (struct sockaddr*) &sa_serv,
sizeof (sa_serv));
if(err < 0)
{
char *msg = (char *)malloc(128);
strcpy(msg,"绑定Socket失败!");
SendMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_STATE_MSG,listen_sd,(long )msg);
return;
}