📄 wizserver.c
字号:
ctrl=gtk_button_new_from_stock(GTK_STOCK_OK);
g_signal_connect (G_OBJECT (ctrl), "clicked",G_CALLBACK (wizserv_setting_clickok), window);
gtk_box_pack_start (GTK_BOX (box), ctrl, TRUE, TRUE, 0);
/* add code end */
if(window!=NULL)
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_widget_show_all (vbox);
return vbox;
}
GtkWidget* wizserv_setting_show(void)
{
GtkWidget *hWin;
if(ifwizserv_setting_open)
return NULL;
ifwizserv_setting_open=1;
/* Create a new window */
hWin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (GTK_WIDGET(hWin), 580, 350);
gtk_window_set_title (GTK_WINDOW (hWin), "Setting");
/* Here we connect the "destroy" event to a signal handler */
gtk_window_set_position(GTK_WINDOW(hWin),GTK_WIN_POS_CENTER);
g_signal_connect(GTK_OBJECT(hWin), "delete_event",
GTK_SIGNAL_FUNC(wizserv_setting_ondestroy),
GTK_OBJECT(hWin));
gtk_grab_add(hWin);
/* Sets the border width of the window. */
gtk_container_set_border_width (GTK_CONTAINER(hWin), 10);
/* ------------------- add extra code here --------------------- */
wizserv_setting_create(hWin);
/* ------------------------------------------------------------- */
gtk_widget_show_all(hWin);
return hWin;
}
/* add for server function running ... */
#include <stdarg.h>
void Serv_OnDebugMessage( char * pszMsg, ... )
{
static char pszErr[ 1024 ];
char *msgstart=NULL;
static int count=0;
sprintf(pszErr,"%05d:",++count);
msgstart=pszErr+strlen(pszErr);
va_list args;
va_start( args, pszMsg );
vsprintf( msgstart, pszMsg, args ); pszErr[ 1023 ] = '\0';
va_end( args );
if(count%50==0)
wizserv_areac_settext(pszErr);
else
wizserv_areac_addtext(pszErr);
}
guint areae_packetrownum=0;
int Serv_OnClientConnected(REQLIST *lpuser)
{
int index;
char itemsg[256];
if(GetConnectClient(lpuser)==NULL)
{
Serv_OnDebugMessage("GetConnectClient failed !");
return -1;
}
index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaelist.ctrl),(gpointer)lpuser);
if(index<0)
{
index=gtk_clist_insert(GTK_CLIST(wizserv_areaelist.ctrl),0,wizserv_areae_defaulttitles);
gtk_clist_set_row_data (GTK_CLIST(wizserv_areaelist.ctrl), index ,(gpointer)lpuser);
areae_packetrownum++;
}
// SOCKET,?,??,?,??,??
sprintf(itemsg,"%d",lpuser->sd_accept);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,0,(gchar *)itemsg);
sprintf(itemsg,"%s",lpuser->ClientAddr);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,1,(gchar *)itemsg);
sprintf(itemsg,"%u",(unsigned int)lpuser->rpcount);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,2,(gchar *)itemsg);
sprintf(itemsg,"%u",(unsigned int)lpuser->wpcount);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,3,(gchar *)itemsg);
sprintf(itemsg,"%u",(unsigned int)lpuser->rcount);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,4,(gchar *)itemsg);
sprintf(itemsg,"%u",(unsigned int)lpuser->wcount);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,5,(gchar *)itemsg);
if(areae_packetrownum>=200)
{
gtk_clist_remove(GTK_CLIST(wizserv_areaelist.ctrl),areae_packetrownum-1);
areae_packetrownum=areae_packetrownum-1;
}
return index;
}
int Serv_OnClientDisconnected(REQLIST *lpuser)
{
int index=0;
if(lpuser==NULL)
return -1;
if(GetDisconnectClient(lpuser)<=0)
{
Serv_OnDebugMessage("No Clients or segment fault !");
return 0;
}
index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaelist.ctrl),(gpointer)lpuser);
if(index>=0)
{
if(lpuser==curClient)
{
curClient=0;
gtk_clist_clear(GTK_CLIST(wizserv_areaa1list.ctrl));
}
gtk_clist_remove(GTK_CLIST(wizserv_areaelist.ctrl),index);
}
return index;
}
int Serv_OnRequestPro(REQLIST *lpuser,unsigned char *lpbuf,int recvlen)
{
int index;
char itemsg[256];
if(lpuser==NULL)
return 0;
if(CheckSocketUser(lpuser)>0)
{
ClientDataInfo *retinsert=NULL;
retinsert=InsertDataToClient(lpuser,lpbuf,recvlen);
if(retinsert==NULL)
{
Serv_OnDebugMessage("InsertDataToClient failure !");
}
else if(lpuser == curClient)
{
/* add extra code here */
struct tm *lptm=0;;
time_t ctimet;
index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaa1list.ctrl),(gpointer)retinsert);
if(index<0)
{
index=gtk_clist_insert(GTK_CLIST(wizserv_areaa1list.ctrl),0,wizserv_areaa1_defaulttitles);
gtk_clist_set_row_data (GTK_CLIST(wizserv_areaa1list.ctrl), index ,(gpointer)retinsert);
areaa1_packetrownum++;
}
sprintf(itemsg,"%ld",retinsert->nID);
gtk_clist_set_text(GTK_CLIST(wizserv_areaa1list.ctrl),index,0,(gchar *)itemsg);
ctimet=retinsert->dtime;
lptm=gmtime(&ctimet);
sprintf(itemsg,"%04d-%02d-%02d %02d:%02d:%02d",
lptm->tm_year+1900,lptm->tm_mon+1,lptm->tm_mday,
lptm->tm_hour+8,lptm->tm_min,lptm->tm_sec);
gtk_clist_set_text(GTK_CLIST(wizserv_areaa1list.ctrl),index,1,(gchar *)itemsg);
sprintf(itemsg,"%d",retinsert->length);
gtk_clist_set_text(GTK_CLIST(wizserv_areaa1list.ctrl),index,2,(gchar *)itemsg);
}
index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaelist.ctrl),(gpointer)lpuser);
if(index>=0)
{
/* add code here */
sprintf(itemsg,"%u",(unsigned int)lpuser->rpcount);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,2,(gchar *)itemsg);
sprintf(itemsg,"%u",(unsigned int)lpuser->rcount);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,4,(gchar *)itemsg);
}
if(ifwizserv_autosend)
{
curClient=lpuser;
wizserv_areab2_clicksend(NULL,NULL);
}
}
return 1;
}
int Serv_OnClientSend(REQLIST *lpuser,unsigned char *lpbuf,int recvlen)
{
int index;
char itemsg[256];
if(lpuser==NULL)
return 0;
index=gtk_clist_find_row_from_data (GTK_CLIST(wizserv_areaelist.ctrl),(gpointer)lpuser);
if(index>=0)
{
/* add code here */
sprintf(itemsg,"%u",(unsigned int)lpuser->wpcount);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,3,(gchar *)itemsg);
sprintf(itemsg,"%u",(unsigned int)lpuser->wcount);
gtk_clist_set_text(GTK_CLIST(wizserv_areaelist.ctrl),index,5,(gchar *)itemsg);
}
return 1;
}
/* ------------------------ main dialogs --------------------------------- */
GtkWidget* get_wizserver_dialog( GtkWidget *window)
{
GtkWidget *areaA1, *areaA2, *areaB1, *areaB2, *areaC, *areaE;
GtkWidget *span_ha, *span_hb, *span_va, *span_vc, *span_vd, *frame;
/* create and link span */
span_va = gtk_vpaned_new ();
span_ha = gtk_hpaned_new ();
span_hb = gtk_hpaned_new ();
span_vc = gtk_vpaned_new ();
span_vd = gtk_vpaned_new ();
gtk_paned_add1 (GTK_PANED (span_va), span_ha);
gtk_paned_add2 (GTK_PANED (span_va), span_hb);
frame = gtk_frame_new("Send packet log:");
gtk_container_add (GTK_CONTAINER (frame), span_vc);
gtk_paned_add1 (GTK_PANED (span_hb), frame);
frame = gtk_frame_new("Receive packet log:");
gtk_container_add (GTK_CONTAINER (frame), span_vd);
gtk_paned_add2 (GTK_PANED (span_hb), frame);
/* span_ha.1 = area C */
areaC= textarea_createlist(NULL,&textarea_c);
gtk_widget_set_size_request (GTK_WIDGET (areaC), 300, 150);
frame = gtk_frame_new("Message log:");
gtk_container_add (GTK_CONTAINER (frame), areaC);
gtk_paned_add1 (GTK_PANED (span_ha), frame);
/* span_ha.2 = area E */
areaE= wizserv_areae_create(NULL);
gtk_widget_set_size_request (GTK_WIDGET (areaE), 500, 100);
frame = gtk_frame_new("Connection log:");
gtk_container_add (GTK_CONTAINER (frame), areaE);
gtk_paned_add2 (GTK_PANED (span_ha), frame);
/* span_vd.1 = area A1 */
areaA1= wizserv_areaa1_create(NULL);
gtk_paned_add1 (GTK_PANED (span_vd), areaA1);
gtk_widget_set_size_request (GTK_WIDGET (areaA1), 500, 100);
/* span_vd.2 = area A2 */
areaA2= wizserv_areaa2_create(NULL);
gtk_paned_add2 (GTK_PANED (span_vd), areaA2);
gtk_widget_set_size_request (GTK_WIDGET (areaA2), 500, 200);
/* span_vc.1 = area B1 */
areaB1= textarea_createlist(NULL,&textarea_b1);
gtk_paned_add1 (GTK_PANED (span_vc), areaB1);
gtk_widget_set_size_request (GTK_WIDGET (areaB1), 300, 200);
/* span_vc.2 = area B2 */
areaB2= wizserv_areab2_create(NULL);
gtk_paned_add2 (GTK_PANED (span_vc), areaB2);
gtk_widget_set_size_request (GTK_WIDGET (areaB2), 300, 100);
if(window!=NULL)
{
gtk_container_add (GTK_CONTAINER (window), span_va);
gtk_widget_show (span_va);
}
Server_SetClientPro(
Serv_OnDebugMessage,
Serv_OnClientConnected,
Serv_OnClientDisconnected,
Serv_OnRequestPro,
Serv_OnClientSend
);
return span_va;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -