计算机网络作业四
来源:互联网 发布:百度浏览器打不开淘宝 编辑:程序博客网 时间:2024/05/17 03:11
一、Hello客户服务器
1.在CodeBlocks里建立服务器端serv和客户端dialog WIN32 GUI工程
2.GUI 设计
打开Resource.rc进入设计界面,拖控件上来,保存,至于软件前面的作业有介绍
3.环境配置
serv工程和dialog工程分别在CodeBlocks里打开Project–>Build Options–>Linker settings进行如下配置
4.写代码
serv服务端:
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ hInst=hInstance; InitCommonControls(); return DialogBox(hInst, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DlgMain);}#include <windows.h>#include <windowsx.h>#include <commctrl.h>#include <stdio.h>#include "resource.h"#include <stdlib.h>#include <string.h>#include <Iphlpapi.h>#include <winsock2.h>HINSTANCE hInst;HWND button2;HWND button3;HWND list1;HWND edit1;WSADATA wsaData2;SOCKET hSocket;SOCKADDR_IN servAddr2;char message2[30];char name1[30],name2[30],check2[30];int strLen2;BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch(uMsg) { case WM_INITDIALOG: { button2=GetDlgItem(hwndDlg,IDC_BUTTON2); button3=GetDlgItem(hwndDlg,IDC_BUTTON3); list1=GetDlgItem(hwndDlg,IDC_LIST1); edit1=GetDlgItem(hwndDlg,IDC_EDIT1); } return TRUE; case WM_CLOSE: { closesocket(hSocket); WSACleanup(); EndDialog(hwndDlg, 0); } return TRUE; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_BUTTON2: if(WSAStartup(MAKEWORD(2, 2), &wsaData2)!=0) printf("WSAStartup() error!"); hSocket=socket(PF_INET, SOCK_STREAM, 0); if(hSocket == INVALID_SOCKET) printf("socket() error"); memset(&servAddr2, 0 ,sizeof(servAddr2)); servAddr2.sin_family=AF_INET; servAddr2.sin_addr.s_addr=inet_addr("127.0.0.1"); servAddr2.sin_port=htons(9091); if(connect(hSocket, (struct sockaddr*)&servAddr2, sizeof(servAddr2))==SOCKET_ERROR) printf("connect() error"); printf("连接成功..\n"); break; case IDC_BUTTON3: Edit_GetText(edit1,check2,30); Edit_SetText(edit1,""); send(hSocket, check2, sizeof(check2), 0); memset(name1, 0, sizeof(name1)); strcat(name1,"我:"); strcat(name1,check2); ListBox_AddItemData(list1,name1); Sleep(1000); memset(name2, 0, sizeof(name2)); memset(message2, 0, sizeof(message2)); recv(hSocket,message2,sizeof(message2)-1, 0); strcat(name2,"我才不是机器人:"); printf("message2: %s\n",message2); strcat(name2,message2); ListBox_AddItemData(list1,name2); break; } } return TRUE; } return FALSE;}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ hInst=hInstance; InitCommonControls(); return DialogBox(hInst, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DlgMain);}
dialog客户端:
#include <windows.h>#include <windowsx.h>#include <commctrl.h>#include <stdio.h>#include "resource.h"#include <stdlib.h>#include <string.h>#include <Iphlpapi.h>#include <winsock2.h>HINSTANCE hInst;HWND button2;HWND button3;HWND list1;HWND edit1;WSADATA wsaData2;SOCKET hSocket;SOCKADDR_IN servAddr2;char message2[30];char name1[30],name2[30],check2[30];int strLen2;BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch(uMsg) { case WM_INITDIALOG: { button2=GetDlgItem(hwndDlg,IDC_BUTTON2); button3=GetDlgItem(hwndDlg,IDC_BUTTON3); list1=GetDlgItem(hwndDlg,IDC_LIST1); edit1=GetDlgItem(hwndDlg,IDC_EDIT1); } return TRUE; case WM_CLOSE: { closesocket(hSocket); WSACleanup(); EndDialog(hwndDlg, 0); } return TRUE; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_BUTTON2: if(WSAStartup(MAKEWORD(2, 2), &wsaData2)!=0) printf("WSAStartup() error!"); hSocket=socket(PF_INET, SOCK_STREAM, 0); if(hSocket == INVALID_SOCKET) printf("socket() error"); memset(&servAddr2, 0 ,sizeof(servAddr2)); servAddr2.sin_family=AF_INET; servAddr2.sin_addr.s_addr=inet_addr("127.0.0.1"); servAddr2.sin_port=htons(9091); if(connect(hSocket, (struct sockaddr*)&servAddr2, sizeof(servAddr2))==SOCKET_ERROR) printf("connect() error"); printf("连接成功..\n"); break; case IDC_BUTTON3: Edit_GetText(edit1,check2,30); Edit_SetText(edit1,""); send(hSocket, check2, sizeof(check2), 0); memset(name1, 0, sizeof(name1)); strcat(name1,"我:"); strcat(name1,check2); ListBox_AddItemData(list1,name1); Sleep(1000); memset(name2, 0, sizeof(name2)); memset(message2, 0, sizeof(message2)); recv(hSocket,message2,sizeof(message2)-1, 0); strcat(name2,"我才不是机器人:"); printf("message2: %s\n",message2); strcat(name2,message2); ListBox_AddItemData(list1,name2); break; } } return TRUE; } return FALSE;}
完成
运行
二、TCP客户服务器
第1步、第2步、第3步参考上面不再赘述,只贴出工程图和GUI图
4.代码
tserv服务端:
#include <windows.h>#include <windowsx.h>#include <commctrl.h>#include <stdio.h>#include "resource.h"#include <stdlib.h>#include <string.h>#include <Iphlpapi.h>#include <winsock2.h>HINSTANCE hInst;HWND button1;WSADATA wsaData;SOCKET hServSock,hClntSock;SOCKADDR_IN servAddr, clntAddr;int szClntAddr;char message[30]="Hello World!";char check[30],ans[30];int flag=1;int strLen=0,i;int idx=0, readLen=0;BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch(uMsg) { case WM_INITDIALOG: { button1=GetDlgItem(hwndDlg,IDC_BUTTON1); } return TRUE; case WM_CLOSE: { EndDialog(hwndDlg, 0); } return TRUE; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_BUTTON1: printf("建立中..\n"); if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0) printf("WSAStartup() error!"); hServSock=socket(PF_INET, SOCK_STREAM, 0); if(hServSock == INVALID_SOCKET) printf("socket() error"); memset(&servAddr, 0 ,sizeof(servAddr)); servAddr.sin_family=AF_INET; servAddr.sin_addr.s_addr=htonl(INADDR_ANY); servAddr.sin_port=htons(9091); if(bind(hServSock, (SOCKADDR*) &servAddr, sizeof(servAddr))==SOCKET_ERROR) printf("bind() error"); if(listen(hServSock, 5)==SOCKET_ERROR) printf("listen() error"); MessageBox(hwndDlg,"建立成功","建立信息", MB_OK); printf("正在监听...\n"); szClntAddr=sizeof(clntAddr); hClntSock=accept(hServSock, (SOCKADDR*)&clntAddr, &szClntAddr); if(hClntSock==INVALID_SOCKET) printf("accept() error"); printf("接听成功..\n"); printf("开始发送..\n"); for(i=strlen(message)-1; i>0; i--) { readLen=send(hClntSock, &message[idx++], 1, 0); if(readLen==-1) printf("read() error!"); } printf("发送完毕"); closesocket(hClntSock); closesocket(hServSock); WSACleanup(); break; } } return TRUE; } return FALSE;}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ hInst=hInstance; InitCommonControls(); return DialogBox(hInst, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DlgMain);}
tclnt客户端:
#include <windows.h>#include <windowsx.h>#include <commctrl.h>#include <stdio.h>#include "resource.h"#include <stdlib.h>#include <string.h>#include <Iphlpapi.h>#include <winsock2.h>HINSTANCE hInst;HWND button1;HWND button2;HWND edit1;WSADATA wsaData2;SOCKET hSocket;SOCKADDR_IN servAddr2;char message[30],a;char name1[100]="Message from server: ",name2[100]="Function read call count: ",check2[30];int strLen2;int strLen=0,i;int idx=0, readLen=0;BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch(uMsg) { case WM_INITDIALOG: { button1=GetDlgItem(hwndDlg,IDC_BUTTON1); button2=GetDlgItem(hwndDlg,IDC_BUTTON2); edit1=GetDlgItem(hwndDlg,IDC_EDIT1); } return TRUE; case WM_CLOSE: { closesocket(hSocket); WSACleanup(); EndDialog(hwndDlg, 0); } return TRUE; case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_BUTTON1: if(WSAStartup(MAKEWORD(2, 2), &wsaData2)!=0) printf("WSAStartup() error!"); hSocket=socket(PF_INET, SOCK_STREAM, 0); if(hSocket == INVALID_SOCKET) printf("socket() error"); memset(&servAddr2, 0 ,sizeof(servAddr2)); servAddr2.sin_family=AF_INET; servAddr2.sin_addr.s_addr=inet_addr("127.0.0.1"); servAddr2.sin_port=htons(9091); if(connect(hSocket, (struct sockaddr*)&servAddr2, sizeof(servAddr2))==SOCKET_ERROR) printf("connect() error"); printf("连接成功..\n"); break; case IDC_BUTTON2: for(i=0; i<3000; i++) printf("Wait time %d \n",i); while(readLen=recv(hSocket, message, sizeof(message)-1, 0)) { if(readLen==-1) printf("read() error!"); strLen++; } printf("接收完成\n"); printf("Message from server: %s \n", message); printf("Function read call count: %d \n", strLen); break; } } return TRUE; } return FALSE;}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ hInst=hInstance; InitCommonControls(); return DialogBox(hInst, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DlgMain);}
阅读全文
0 0
- 计算机网络作业四
- 计算机网络作业四
- 计算机网络作业
- 计算机网络作业
- 计算机网络作业
- 计算机网络(四)
- 计算机网络四
- 计算机网络第三次作业
- 计算机网络编程作业
- [计算机网络] 作业(1)
- 计算机网络作业合辑
- 计算机网络第一次作业
- 计算机网络作业二
- 计算机网络第二次作业
- 计算机网络作业三
- 计算机网络第三次作业
- 计算机网络作业三
- 计算机网络第四次作业
- [NOIP模拟][状压DP]乘积
- Java implement polymorphism
- 【MTK】MTK不开机问题分析
- 第七周项目三
- 严蔚敏数据结构——算法2.11和2.12
- 计算机网络作业四
- GeekBand笔记-《STL与泛型编程 》 第一周
- 代码高亮测试
- Redis基础——sort排序
- 数据结构图文解析之:AVL树详解及C++模板实现
- 1044. 火星数字(20)
- ubuntu 16.04 无法重启
- RGB-D数据集汇总 List of RGBD datasets
- 关于项目首页(欢迎页)跳转问题