提供了強制資料立即傳送的操作指令
push,tcp軟體收到該操作指令後,就立即將本段資料傳送出去,而不必等待傳送緩衝區滿;
#include
#pragma
comment(lib, "ws2_32.lib")
int_tmain(int
argc, _tchar* argv)
// socket()
socket socksrv = socket(af_inet, sock_stream, 0);
// 初始化ip和埠資訊
sockaddr_in addrsrv;
addrsrv.sin_family = af_inet;
addrsrv.sin_port = htons(port); // 1024
以上的埠號
addrsrv.sin_addr.s_un.s_addr = htonl(inaddr_any);
// bind()
if (bind(socksrv, (lpsockaddr)&addrsrv, sizeof(sockaddr_in)) == socket_error)
// listen()
if (listen(socksrv, 10) == socket_error)
// 客戶端資訊
sockaddr_in addrclient;
int len = sizeof(sockaddr);
// 開始監聽
printf("
服務端啟動成功......開始監聽...\n");
while (1)
printf("
與客戶端建立連線......ip:[%s]\n", inet_ntoa(addrclient.sin_addr));
// 傳送資料
if (send(sockconn, buf, sizeof(buf), 0) == socket_error)
char recvbuf[100];
memset(recvbuf, 0, sizeof(recvbuf));
// 接收資料
recv(sockconn, recvbuf, sizeof(recvbuf), 0);
printf("
收到資料:%s\n", recvbuf);
closesocket(sockconn);
}//
關閉套接字
closesocket(socksrv);
wsacleanup();
system("pause");
return 0;
}#include
#pragma
comment(lib, "ws2_32.lib")
int_tmain(int
argc, _tchar* argv)
// 初始化ip和埠資訊
sockaddr_in addrsrv;
addrsrv.sin_family = af_inet;
addrsrv.sin_port = htons(port);
addrsrv.sin_addr.s_un.s_addr = inet_addr("127.0.0.1");
// socket()
socket sockclient = socket(af_inet, sock_stream, 0);
if (socket_error == sockclient)
// 向伺服器發出連線請求
if (connect(sockclient, (struct
sockaddr*)&addrsrv, sizeof(addrsrv)) == invalid_socket)
else
// 關閉套接字
closesocket(sockclient);
wsacleanup();
return 0;
}定義控制台應用程式的入口點。
//#include
"stdafx.h"
#include
#include
#pragma
comment(lib, "ws2_32.lib")
int_tmain(int
argc, _tchar* argv)
// 初始化ip和埠資訊
sockaddr_in addrsrv;
addrsrv.sin_family = af_inet;
addrsrv.sin_port = htons(port);
addrsrv.sin_addr.s_un.s_addr = htonl(inaddr_any);
// socket()
socket sockclient = socket(af_inet,sock_dgram, 0);
if (socket_error == sockclient)
// bind()
if (bind(sockclient, (lpsockaddr)&addrsrv, sizeof(sockaddr_in)) == socket_error)
sockaddr_in addrclnt;
int nlen = sizeof(sockaddr);
// 訊息
char szmsg[1024];
memset(szmsg, 0, sizeof(szmsg));
// 等待客戶請求到來
printf("
服務端啟動成功......等待客戶傳送資料...\n");
while (1)
}//
上面為無線迴圈,以下**不會執行
// 關閉套接字
closesocket(sockclient);
wsacleanup();
return 0;
}定義控制台應用程式的入口點。
//#include
"stdafx.h"
#include
#include
#pragma
comment(lib, "ws2_32.lib")
int_tmain(int
argc, _tchar* argv)
// socket()
socket sockclient = socket(af_inet, sock_dgram, 0);
if (socket_error == sockclient)
// 初始化ip和埠資訊
sockaddr_in addrsrv;
addrsrv.sin_family = af_inet;
addrsrv.sin_port = htons(port);
addrsrv.sin_addr.s_un.s_addr = inet_addr("127.0.0.1");
int nlen = sizeof(sockaddr);
// 傳送資料
char szmsg[1024];
memset(szmsg, 0, sizeof(szmsg));
sendto(sockclient, szmsg, sizeof(szmsg), 0, (sockaddr*)&addrsrv, nlen);
// 傳送資料
while (1)
// 傳送資料
sendto(sockclient, szmsg, sizeof(szmsg), 0, (sockaddr*)&addrsrv, nlen);
// 清空快取
memset(szmsg, 0, sizeof(szmsg));
// 接收資料
if (socket_error != recvfrom(sockclient, szmsg, sizeof(szmsg), 0, (sockaddr*)&addrsrv, &nlen))
}//
關閉套接字
closesocket(sockclient);
wsacleanup();
return 0;
}massage
結構體訊息
massage stmsg;
memset(stmsg.strmsg, 0, sizeof(stmsg.strmsg));
stmsg.nid = 1001;
strcpy(stmsg.strmsg, "struct string");
// ...
sendto(sockclient, (char*)&stmsg, sizeof(stmsg) + 1, 0, (sockaddr*)&addrclnt, nlen);
結構體massage stmsg;
memset(stmsg.strmsg, 0, sizeof(stmsg.strmsg));
memcpy(&stmsg, szmsg, sizeof(stmsg) + 1);
printf("
接收方:%d\t%s\n", stmsg.nid, stmsg.strmsg);
struct
photo
sendto(sockclient, (char*)&stphoto, sizeof(stphoto), 0, (sockaddr*)&addrsrv, nlen);
}正在接收檔案......\n");
while (1)
int n = fwrite(stphoto.buf, 1, stphoto.nsize, fp2);
//printf("write %d byte\n", n);}}
VS下QT程式設計
參考 1 ui介面,開啟qt designer可以進行編輯,有點像做安卓的layout 2 ui介面所對應的 h 檔案,裡面有你再ui介面各種控制項的 實現 3 工程的 h 檔案,可以宣告你想要實現的操作,新增按鍵對應 槽函式 4 cpp檔案了,可以定義在 h 中宣告的函式,實現對應槽函式。將訊號與...
網路程式設計下
設定和獲得套介面選項 獲得套介面選項 int getsockopt int sockfd,int level,int optname,void optval,socklen t opteln 設定套介面選項 int setsockopt int sockfd,int level,int optnam...
Linux下C語言Socket網路程式設計
這裡打算寫乙個在linux系統下執行的socket服務端,然後在win下使用網路助手與其連線,達到資料回顯的功能。廢話不多說了,咱們現在開始。建立socket。將建立socket時返回的套接字描述符與伺服器ip位址和埠進行繫結。開始監聽連線到該伺服器的客戶端。當有客戶端請求與該服務端程式進行連線時,...