window平台下gtk+socket简单学习。
2011-10-13 15:24
204 查看
1.使用dev-c++作为IDE时,需在”编译器项“中的“添加命令行编辑框“中添加socket的lib库-lwsock32 2.使用glade 添加一个按钮,并添加clicked的信号会自动生成此信号的回调函数 3.在此回调函数实现创建socket/绑定端口/监听套接字,发现有客户端连接就弹出一个对话框提示,然后关闭连接;具体代码如下: #include <winsock2.h> void on_button1_clicked (GtkButton *button, gpointer user_data) { //---------------------- // Initialize Winsock. WSADATA wsaData; SOCKET ListenSocket,AcceptSocket; int iResult; struct sockaddr_in service; iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != NO_ERROR) { printf("Error at WSAStartup()\n"); return ; } //---------------------- // Create a SOCKET for listening for // incoming connection requests. ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (ListenSocket == INVALID_SOCKET) { printf("Error at socket(): %ld\n", WSAGetLastError()); WSACleanup(); return ; } //---------------------- // The sockaddr_in structure specifies the address family, // IP address, and port for the socket that is being bound. service.sin_family = AF_INET; service.sin_addr.s_addr = inet_addr("127.0.0.1"); service.sin_port = htons(27015); if (bind( ListenSocket, (SOCKADDR*) &service, sizeof(service)) == SOCKET_ERROR) { printf("bind() failed.\n"); closesocket(ListenSocket); WSACleanup(); return ; } //---------------------- // Listen for incoming connection requests. // on the created socket if (listen( ListenSocket, 1 ) == SOCKET_ERROR) { printf("Error listening on socket.\n"); closesocket(ListenSocket); WSACleanup(); return ; } //---------------------- // Create a SOCKET for accepting incoming requests. printf("Waiting for client to connect...\n"); //---------------------- // Accept the connection. AcceptSocket = accept( ListenSocket, NULL, NULL ); if (AcceptSocket == INVALID_SOCKET) { printf("accept failed: %d\n", WSAGetLastError()); closesocket(ListenSocket); WSACleanup(); return ; } else { printf("Client connected.\n"); GtkWidget *dialog; dialog = gtk_message_dialog_new (NULL,0, GTK_MESSAGE_INFO,GTK_BUTTONS_OK,"lient connected"); gtk_dialog_run(GTK_DIALOG(dialog));//显示并运行对话框 gtk_widget_destroy(dialog);//销毁对话框 } // No longer need server socket closesocket(ListenSocket); WSACleanup(); return ; }
相关文章推荐
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
- cocos2d-x 3.0来做一个简单的游戏教程 win32平台 vs2012 详解献给刚開始学习的人们!
- socket简单创建web服务器之学习笔记
- 从现在开始学习一下在 Office 平台上进行开发一些简单的应用程序,欢迎有从事这方面的高手和同道指点交流。
- 写了个在window平台上自动发布eclipse 的web应用ant 程序(纯属学习)实用性不强
- python学习之路---socket简单练习(1)
- Qt学习 之 Socket通信(世界上最简单的例子了)
- Socket通讯简单学习
- C#学习——简单socket、多线程
- 学习socket(一) TCP简单聊天程序
- Dagger学习之一步一步搭建简单的自动化测试平台(Selenium+TestNG+Ant+Jenkins)
- jfinal学习笔记【3】-freemarker简单测试-laymi(雷米快速开发平台)
- Python学习笔记(2)- Window 平台安装 Python
- linux下c图形化编程之gtk+2.0简单学习
- .Net语言 APP开发平台——Smobiler学习日志:HoverBackColor属性的简单介绍
- 简单的学习一下SOCKET的文件传输
- iOS学习爬坑记录11:学习AsyncSocket时用python写的服务器server端简单代码
- 快速搭建java开发环境-超详细,超简单(适用于window平台)
- Dagger学习之一步一步搭建简单的自动化测试平台(Selenium+TestNG+Ant+Jenkins)
- 【java学习记录】12.用Socket网络访问方法,实现简单的网络聊天程序