server端接收到client端資訊後不會返回給client端
// tcpechoserver.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include
#include
#include
#pragma comment(lib, "ws2_32.lib")
#define grs_alloc(sz) heapalloc(getprocessheap(), 0 ,sz)
#define grs_calloc(sz) heapalloc(getprocessheap(), heap_zero_memory, sz)
#define grs_crealloc(p, sz) heaprealloc(getprocessheap(), heap_zero_memory, p, sz)
#define grs_safefree(p) if(null != p)
#define grs_useprintf() tchar pbuf[1024] = {}; char pbufa[1024] = {};
#define grs_printf(...)\
stringcchprintf(pbuf, 1024, __va_args__);\
writeconsole(getstdhandle(std_output_handle), pbuf, lstrlen(pbuf), null, null);
#define grs_printfa(...)\
stringcchprintfa(pbufa, 1024, __va_args__);\
writeconsolea(getstdhandle(std_output_handle), pbufa, lstrlena(pbufa), null, null);
#define sock_verh 2
#define sock_verl 2
#define grs_server_port 5634
int _tmain(int argc, _tchar* ar**)
if(lobyte(wd.wversion) != sock_verh || hibyte(wd.wversion) != sock_verl)
grs_printf(_t("winsock庫初始化成功!\n\t當前系統中支援最高的winsock版本為%d.%d\n\t當前應用程式使用的winsock版本為%d.%d\n"),
lobyte(wd.whighversion), hibyte(wd.whighversion),
lobyte(wd.wversion), hibyte(wd.wversion));
socket skserver = socket(af_inet, sock_stream, ipproto_tcp);
socket skclient = invalid_socket;
sockaddr_in saclient = {};
int isalen = sizeof(sockaddr_in);
void* pskbuf = null;
void* pskbuftmp = null;
int ibuflen = 1024;
int ibuflentmp = 0;
int irecv = 0;
sockaddr_in sa = ;
sa.sin_addr.s_addr = htonl(inaddr_any);
sa.sin_port = htons(grs_server_port);
if(0 != bind(skserver, (sockaddr*)&sa, sizeof(sockaddr_in)))
if(0 != listen(skserver, somaxconn))
while(invalid_socket != (skclient=accept(skserver, (sockaddr*)&saclient, &isalen)))
if(irecv >= (ibuflen - ibuflentmp))
}while (1);
if(socket_error != irecv && 0 != irecv)
else
grs_safefree(pskbuf);
pskbuftmp = null;
ibuflentmp = 0;
ibuflen = 1024;
shutdown(skclient, sd_both);
closesocket(skclient);
}clean_up:
_tsystem(_t("pasue"));
if(invalid_socket != skserver)
::wsacleanup();
return 0;
} //server端的**
// tcpechoclient.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include
#include
#include
#pragma comment(lib, "ws2_32.lib")
#define grs_alloc(sz) heapalloc(getprocessheap(), 0 ,sz)
#define grs_calloc(sz) heapalloc(getprocessheap(), heap_zero_memory, sz)
#define grs_crealloc(p, sz) heaprealloc(getprocessheap(), heap_zero_memory, p, sz)
#define grs_safefree(p) if(null != p)
#define grs_useprintf() tchar pbuf[1024] = {}; char pbufa[1024] = {};
#define grs_printf(...)\
stringcchprintf(pbuf, 1024, __va_args__);\
writeconsole(getstdhandle(std_output_handle), pbuf, lstrlen(pbuf), null, null);
#define grs_printfa(...)\
stringcchprintfa(pbufa, 1024, __va_args__);\
writeconsolea(getstdhandle(std_output_handle), pbufa, lstrlena(pbufa), null, null);
#define sock_verh 2
#define sock_verl 2
#define grs_server_port 5634
int _tmain(int argc, _tchar* ar**)
if(lobyte(wd.wversion) != sock_verh || hibyte(wd.wversion) != sock_verl)
grs_printf(_t("winsock庫初始化成功!\n\t當前系統中支援最高的winsock版本為%d.%d\n\t當前應用程式使用的winsock版本為%d.%d\n"),
lobyte(wd.whighversion), hibyte(wd.whighversion),
lobyte(wd.wversion), hibyte(wd.wversion));
socket skclient = socket(af_inet, sock_stream, ipproto_ip);
sockaddr_in sa = ;
sa.sin_addr.s_addr = inet_addr("127.0.0.1");
sa.sin_port = htons(grs_server_port);
wchar pszsendmsg = _t("hello internetssssssssssssssssssssssssss!");
size_t szlen = 0;
stringcchlength(pszsendmsg, 30, &szlen);
wchar pszrecvbuf[1024] = {};
if(0 != connect(skclient, (sockaddr*)&sa, sizeof(sockaddr_in)))
send(skclient, (char*)pszsendmsg, szlen * sizeof(wchar), 0);
recv(skclient, (char*)pszrecvbuf, 1024 * sizeof(wchar), 0);
grs_printf(_t("echo:%s\n"), pszrecvbuf);
clean_up:
if(invalid_socket != skclient)
_tsystem(_t("pasue"));
::wsacleanup();
return 0;
} //client端的**
server端接收到client端資訊後不會返回給client端,
TCP協議相關問題
當多個連線請求同時到達server,會怎麼樣?1.tcp存在乙個連線佇列,對於新的連線請求,該tcp監聽的埠的連線佇列中還有空間則tcp模組對syn進行確認並完成連線的建立,丟進連線佇列。應用層只在三次握手的第三個報文收到後才知道這個新連線。2.對於新的連線請求,連線佇列中如果沒有空間,tcp將不理...
TCP網路協議問題
題目描述 在如今的網路中,tcp 是一種被廣泛使用的網路協議,它在傳輸層提供了可靠的通訊服務。眾所周知,網路是存在時延的,例如使用者先後向伺服器傳送了兩個指令 op1 和 op2,並且希望伺服器先處理指令 op1,再處理指令 op2 但由於網路時延,這兩個指令可能會失序到達,而導致伺服器先執行了指令...
TCP IP協議 TCP協議
今天算是對了tcp協議有個膚淺的理解了 儘管tcp和udp都是一樣的網路層ip,但是tcp卻和udp實現著不一樣的服務,tcp是乙個面向連線的,可靠地位元組流服務!面向連線是指 兩個使用tcp的程式要建立乙個tcp連線才能交換資料。tcp以以下方式提供可靠性 1 應用程式被分為tcp認為合適傳送的資...