现在的位置: 首页 > 综合 > 正文

多线程聊天室程序 基于SDK

2013年11月02日 ⁄ 综合 ⁄ 共 2821字 ⁄ 字号 评论关闭

哈哈哈哈  终于完成了 ,NND 写了2.

 

虽然完成了,虽然在机器上运行了,虽然能运行得很好,还虽然能发消息和能收消息.(说了怎么多虽然了肯定要有"但是"来衬托了),但是啊,还有很多我不满意的地方

 

第一:全局变量太多,都怪自己太懒,不愿意传参数,看看一般能设置为全局变量的都设置为全局变量了,懒啊!!下次一定改,不改是小狗!

 

第二:程序中没有面向对象的设计风格,虽然定义了几个模块,但是模块之间还是被那些全局变量给联系在一起,整个程序像一团乱麻,剪不断,理还乱,是离愁,恰似一江春水向东流,都说那里去,打住!!

 

第三:写作风格有待提高,这里的风格和很多因素有关 自己的能力,扎实的基础,良好的程序设计习惯,等等........这些都不是一日之功,虽然说不是一日之功,但是要天天注意自己的习惯,就拿那个命名法来说吧,老是忘记,一个字符串老是喜欢写成str  一般的写法是szStr;还有很多东西,比如那个什么指针的分配,在释放指针的空间后老是忘记P=NULL;操作了,.这些基本能力以后写程序的时候慢慢注意点,相信自己很快就能适应.

 

还有几个不足地方现在忘记了,下次想到了再写上来吧

谁要源码和我联系

客户端

//==================================头文件============================================

//#include <windows.h>

#include<Winsock2.h>

#include<stdio.h>

#include <process.h>

#include "resource.h"

//==========================定义消息====================================================

#define WM_RECVDATA WM_USER+100

//===========================库文件=====================================================

#pragma comment(lib, "ws2_32.lib")

#pragma comment(lib, "mswsock.lib")

 

//========================全局变量=====================================================

HWND g_DialogHwnd;    //定义对话框句柄

SOCKET g_ClientSocket; //定义SOCKET对象用来连接服务器的套结字

char szTempBuffer[9999];

sockaddr_in addrSock;//服务器的地址

//SOCKET g_RecvSocket;//用来接收消息的套结字

//=========================全局函数=====================================================

BOOL CALLBACK DialogFun(HWND, UINT,WPARAM, LPARAM);

DWORD InitSocketVersion();//协议协商

BOOL InitSocket();       //创建并绑定socket

BOOL OnSend();           //用来发送消息的

void __cdecl  ReceiveMessage(void*);//线程函数,用来接受消息的用来监听消息的

 

//======================================================================================

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)

{

       MSG msg;

       if(100==DialogBox(hinstance,"mydialog",NULL,(DLGPROC)DialogFun))

       {

              PostQuitMessage(WM_QUIT);

       }

       while (GetMessage(&msg, (HWND) NULL, 0, 0))

       {  

              TranslateMessage(&msg);

              DispatchMessage(&msg);

       }

       //WSACleanup();

       return msg.wParam;

       UNREFERENCED_PARAMETER(lpCmdLine);

      

}

//====================================================================================

BOOL CALLBACK DialogFun(HWND dlghwnd, UINT message,WPARAM wParam, LPARAM lParam)

{

       g_DialogHwnd=dlghwnd;

       switch(message)

       { 

       case WM_PAINT:

              return FALSE;

       case   WM_INITDIALOG :

             

              {  

                     InitSocketVersion();

                     //InitSocket();

                     return FALSE;

              }

       case WM_RECVDATA: //使用接受到消息,并显示于对话框上

              {  

                     char str[9999];

                     GetDlgItemText(g_DialogHwnd,IDC_DISPLAYTEXT,str,9999);

                     sprintf(str,"%s/r/n%s",str,szTempBuffer);

                     SetDlgItemText(g_DialogHwnd,IDC_DISPLAYTEXT,str);

                     SetDlgItemText(g_DialogHwnd,IDC_SENDTEXT,"");

                     SetFocus

抱歉!评论已关闭.