Socket網路程式設計

2021-05-24 11:09:12 字數 3384 閱讀 7793

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...