socket
網路程式設計
在c-free中建立乙個對話方塊工程,取名socket1,建立如下檔案結構:
main.h
#ifndef _main_h
#define _main_h
#include
bool winapi main_proc(hwnd hwnd, uint umsg, wparam wparam, lparam lparam);
bool main_oninitdialog(hwnd hwnd, hwnd hwndfocus, lparam lparam);
void main_oncommand(hwnd hwnd, int id, hwnd hwndctl, uint codenotify);
void main_onclose(hwnd hwnd);
void sockettest();
void showerror();
#endif
main.cpp
#include
#include
#include
#include "main.h"
#include "dialogs.h"
#include "resource.h"
//#pragmacomment(lib,"libwsock32.a")
bool winapi main_proc(hwnd hwnd, uint umsg, wparam wparam, lparam lparam)
switch(umsg)
//begin message crack
handle_msg(hwnd, wm_initdialog, main_oninitdialog);
handle_msg(hwnd, wm_command, main_oncommand);
handle_msg(hwnd,wm_close, main_onclose);
//end message crack
return false;
// main_oninitdialog
bool main_oninitdialog(hwnd hwnd, hwnd hwndfocus, lparam lparam)
sendmessage(hwnd, wm_seticon, true, (lparam)hicon);
sendmessage(hwnd, wm_seticon, false, (lparam)hicon);
// add initializing code here
return true;
// main_oncommand
void main_oncommand(hwnd hwnd, int id, hwnd hwndctl, uint codenotify)
switch(id)
case idc_ok:
sockettest();
//messagebox(hwnd,"you click ok!","socket1",mb_ok);
//enddialog(hwnd, id);
break;
case idc_cancel:
messagebox(hwnd,"you click cancel!","socket1",mb_ok);
enddialog(hwnd, id);
break;
default:break;
void sockettest()
wsadata wsadata;
//初始化socket庫
wsastartup(makeword(2,0),&wsadata);
//建立一根電線
socket sock = socket(af_inet, sock_stream, ipproto_tcp);
sockaddr_in sa;
sa.sin_family=af_inet;
//設定電線連線伺服器端的埠
sa.sin_port = htons(ipport_smtp);
//123.125.50.135是ping smtp.163.com出來的,後面會講使用gethostbyname來直接從
//主機名得到ip位址
sa.sin_addr.s_un.s_addr = inet_addr("113.108.225.9");
//為什麼不用設定客戶端的埠,難道不需要客戶端的埠嗎?
if(connect(sock,(sockaddr *)&sa,sizeof(sa))==socket_error)
showerror();
return;
//接收網易郵件stmp伺服器選框訊息
tchar buff[256];
zeromemory(buff,sizeof(buff)/sizeof(tchar));
recv(sock,buff,sizeof(buff)/sizeof(tchar),0);
messagebox(null,buff,text("返回訊息"),mb_ok);
tchar hello="quit/n";
send(sock,hello,sizeof(hello)/sizeof(tchar),0);
//再次接收返回的訊息
zeromemory(buff,sizeof(buff)/sizeof(tchar));
recv(sock,buff,sizeof(buff)/sizeof(tchar),0);
messagebox(null,buff,text("返回訊息"),mb_ok);
closesocket(sock);
wsacleanup();
void showerror()
tchar* lpmsgbuf;
formatmessage(format_message_allocate_buffer| //自動分配訊息緩衝區
format_message_from_system, //從系統獲取資訊
null,getlasterror(), //獲取錯誤資訊標識
makelangid(lang_neutral,sublang_default),//使用系統預設語言
(lptstr)&lpmsgbuf, //訊息緩衝區
0, null);
messagebox(null,lpmsgbuf,"",mb_iconerror);
// main_onclose
void main_onclose(hwnd hwnd)
enddialog(hwnd, 0);
網路程式設計 Socket程式設計
一 網路部分 1.ip 2.埠號 在網路協議中使用埠號識別主機上不同的程序,不同的埠對應於不同的服務 應用程式 3.協議 tcp二 socket部門socket通訊基本流程圖 根據socket通訊基本流程圖,總結通訊的基本步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定...
socket網路程式設計
首先認識乙個表示主機資訊的結構體 struct hostent h addrtype 這是表示主機所使用的位址型別的定義,在c語言winsock2.h標頭檔案中以 af 開頭的巨集定義就是它的值。如果使用的是ipv4,則值為 af inet 如果是ipv6,值為 af inet4 h length ...
Socket網路程式設計
類似於 呼叫過程 打 雙方 a,b 相當於2個互相通訊的應用程式,機相當於申請的socket,號碼就是ip位址,雙方通話過程相當於先通過ip連線,然後a向b的socket傳送資料和b從a的socket接收資料,通話結束後,一方結束通話相當於關閉socket,撤銷鏈結。2.socket型別 流式soc...