tcp伺服器搭建軟體
❶ 用VC++建立一個TCP伺服器,求例子看下
//這個是我自己寫的,用來測試,編譯通過
// t.cpp : 定義控制台應用程序的入口點。
//
#include "stdafx.h"
#include <stdlib.h>
#include <WinSock2.h>
#include <string>
#include <sstream>
#include <memory>
#pragma comment (lib,"ws2_32.lib")
//HANDLE hevent;
DWORD WINAPI acceptpro(LPVOID lp);
DWORD WINAPI recvpro(LPVOID lp);
struct _cinf
{
SOCKET s;
HANDLE hevn;
SOCKADDR_IN saddr;
}cinf;
int flag=0;
CRITICAL_SECTION cc;
int _tmain(int argc, _TCHAR* argv[])
{
cinf.hevn=CreateEvent(NULL,false,false,NULL);
//cinf.hevn=WSACreateEvent();
InitializeCriticalSection(&cc);
WSADATA wsaData;
int err = WSAStartup( MAKEWORD(2,2),&wsaData);
if (err!=0)
{
WSACleanup();
}
SOCKET sListen;
// int a=4;
// int sendBufSize=1024*10;
//
// int fff=setsockopt(sListen,SOL_SOCKET,SO_RCVBUF,(char *)&sendBufSize,a);
// if (SOCKET_ERROR==fff)
// {
//
// cout<<"setsockopt error:"<<WSAGetLastError()<<endl;
//// continue;
// }
SOCKADDR_IN addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(8888);
addr.sin_addr.S_un.S_addr=inet_addr("192.168.232.129");
sListen=socket(AF_INET,SOCK_STREAM,0);
bind(sListen,(sockaddr *)&addr,sizeof(SOCKADDR_IN));
int error=listen(sListen,SOMAXCONN);
if (SOCKET_ERROR ==error)
{
cout<<"listen fail"<<endl;
}
// hevent=CreateEvent(NULL,false,false,NULL);
CreateThread(NULL,0,acceptpro,(LPVOID)&sListen,0,NULL);
char qq;
EnterCriticalSection(&cc);
cout<<" enter q quit "<<endl;
LeaveCriticalSection(&cc);
while(1)
{
cin>>qq;
if (qq=='q')
{
cout<<"結束server"<<endl;
// SetEvent(hevent);
closesocket(sListen);
break;
}
}
system("pause");
return 0;
}
DWORD WINAPI acceptpro(LPVOID lp)
{
EnterCriticalSection(&cc);
cout<<" acceptting "<<endl;
LeaveCriticalSection(&cc);
while(flag==0)
{
SOCKET sListen=*(SOCKET*)lp;
SOCKADDR_IN remoteAddr;
int len=sizeof(SOCKADDR_IN);
SOCKET snew=accept(sListen,(sockaddr *)&remoteAddr,&len);
if (INVALID_SOCKET==snew)
{
cout<<"accept error "<<"退出 accept線程"<<endl;
return 0;
}
// cinf.hevn=recvEvent;
cinf.s=snew;
cinf.saddr=remoteAddr;
WSAEventSelect(cinf.s,cinf.hevn,FD_READ);
//CreateThread(NULL,0,recvpro,(LPVOID)&cinf,0,NULL);
EnterCriticalSection(&cc);
cout<<"新連接,ip:"<<inet_ntoa(*(in_addr*)&(remoteAddr.sin_addr.S_un.S_addr))<<"port:"<<ntohs(remoteAddr.sin_port)<<endl;
LeaveCriticalSection(&cc);
}
}
DWORD WINAPI recvpro(LPVOID lp)
{
EnterCriticalSection(&cc);
cout<<"recv"<<endl;
LeaveCriticalSection(&cc);
while(1)
{
_cinf * minf=(_cinf*)lp;
cout<<"__wait__"<<endl;
DWORD re=WaitForSingleObject(minf->hevn,INFINITE);
//ResetEvent(minf->hevn);
cout<<"__set__"<<endl;
if (0==re)
{
/* char buf[512];
recv(minf->s,buf,512,0);
*/ int a=4;
int recvBufSize=0;
int fff=getsockopt(minf->s,SOL_SOCKET,SO_RCVBUF,(char *)&recvBufSize,&a);
if (SOCKET_ERROR==fff)
{
cout<<"setsockopt error:"<<WSAGetLastError()<<endl;
continue;
}
EnterCriticalSection(&cc);
cout<<" 連接,ip:"<<inet_ntoa(*(in_addr*)&(minf->saddr.sin_addr.S_un.S_addr))<<" port:"<<ntohs(minf->saddr.sin_port)<<" recvBufSize: "<<recvBufSize<<endl;
EnterCriticalSection(&cc);
// WSAEventSelect(minf->s,cinf.hevn,FD_READ);
//WSASetEvent(minf.hevn);
}
else
{
cout<<"re="<<re<<endl;
// cout<<"連接,ip:"<<inet_ntoa(*(in_addr*)&(minf.saddr.sin_addr.S_un.S_addr))<<"port:"<<ntohs(minf.saddr.sin_port)<<"WaitForSingleObject:error "<<endl;
}
}
}
❷ tcp udp socket調試工具怎麼用
SocketTool調試軟體是一款網路TCP/UDP通信調試工具,本工具集功能強大與簡單易用為一體,是無需安裝的免費綠色軟體。
它可以幫助網路編程人員、網路維護人員檢查所開發的網路應用軟硬體的通信狀況。 是一款非常好用的socket 鏈接測試工具
TCP/UDP Socket調試工具
TCP/UDP Socket調試工具的特色
★ 全面集成 TCP伺服器/客戶端; UDP伺服器/客戶端; UDP廣播/組播 功能
★ 支持多Socket並行測試, 採用樹狀Socket可視化界面,所有Socket句柄一目瞭然
★ 在一個程序內可進行多句柄/多類型的Socket的創建/刪除/以及數據收發等操作
★ 支持16進制的發送和16進制接收顯示,支持漢字以及文本發送
★ 用戶可以方便的把接收到的數據保存下來
★ 支持發送、接收位元組數統計
★ 支持數據循環發送,同一內容可自動發送1次至10000次
❸ 如何實現tcp服務端對多台電腦通訊
一台電腦用tcpserver,一台用tcp client的方式進行,
先啟動tcpserver,就可以用tcp client連接了,
可以用類似格西烽火軟體、網路調試助手等進行測試。
❹ 如何在STATER軟體上建立TCP/IP通訊
關於modbus協議, 深圳高勝科技的modbus網關串口伺服器NetPort 901支持多達8種工作方式: 1:TCP客戶端 2:TCP伺服器 3:UDP客戶端 4:UDP伺服器 5:RTU_Master--TCP_Slaver 6:TCP_Master--RTU_Slaver 7:ASCII_Master--TCP_Slaver 8:TCP_Maste...
❺ 區域網TCP伺服器,需要外網能訪問,怎麼做
首先你要明白路由是不是共享式NAT上網的,也就是說router port nat出去的數據是一直堆疊或者持續變動的,而不做埠映射基本沒有實現的可能!
當然如果是靜態NAT,那麼直接做靜態NAT就可以了!
如樓上灰鴿子,是直接通過本地服務端(中灰鴿子端)連接廣域網客戶端(控制端),然後服務端和建立的聯系。如通過80埠出數據,穿透防火牆等等。
你可以嘗試修改數據包出去的port,同時在兩個端進行修改!
-------------
抓取到數據包的時候注意地址段,關鍵在於讓路由到router nat到數據包的時候,能找到你的主機A或者W。
你可以參照一些三層更新之類的軟體。
❻ 外網TCP/IP通迅測試,怎麼建立連接.
TCP/IP通信過程,簡單為,三次建立,四次斷開。具體如下:
三次建立:
主機A發送SYN(seq=x)報文給主機B,主機A進入SYN_SEND狀態 ;
主機B收到SYN報文,回應一個SYN(seq=y)ACK(ACK=x+1)報文,主機B進入SYN_RECV狀態;
主機A收到主機B的SYN報文,回應一個ACK(ACK=y+1)報文,主機A進入established狀態。
三次握手完成,主機A和主機B已經建立連接。
四次斷開:
某個應用進程先調用close,稱該端執行「主動關閉」(active close)。該端的TCP發送一個FIN分節,表示數據發送完畢;
接收到這個FIN的對端執行「被動關閉」(passive close),這個FIN由TCP確認。
一段時間的等待後,接收到這個文件結束符的應用進程將調用close關閉它的套接字,所以它的TCP也發送一個FIN。
接收到這個最終FIN的原發送端TCP(主動要求關閉連接的那一端)確認這個FIN。
因為每個方向都需要一個FIN和ACK,所以斷開需要4個次連接。
❼ 把nginx改為一個普通的tcp伺服器,應用層協議自己定義,有可行性嗎
TCP---傳輸控制協議,提供的是面向連接、可靠的位元組流服務。當客戶和伺服器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。
UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸數據報前不用在客戶和伺服器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快
❽ TCP/UDP網路調試工具 1.0怎麼用
通常有三種協議模式,TCP伺服器、TCP客戶端和UDP,如下圖格西烽火軟體所示。
TCP伺服器設置本地地址和埠;
TCP客戶端設置本地地址和埠、遠程地址和埠;
UDP設置本地地址和埠、遠程地址和埠。
可以打開多個軟體互測。
❾ 怎樣在自己電腦上建立一個TCP伺服器
首先需要在電腦上搭建伺服器,關於網上好多按步驟安裝apache,sql,phpmyadmin的方法復雜而且沒有必要,這里推薦wamp這樣的一個集成軟體,安裝非常簡單,一路點擊next,apache+sql+phpmyadmin的環境一鍵搭好。
在網路中搜索Wamp下載,直接下載就行。下載完wamp進行安裝,一路點擊next,裝在c:\wamp下,最後install完成.
在瀏覽器輸入localhost,出現以下頁面說明安裝成功了。現在伺服器和php環境算是搭好了。此時在桌面右下角任務欄中會有wamp的圖標,點擊會有下圖顯示,www是網站頁面根目錄,localhost是網站默認主頁,點擊phpmyadmin可以進入資料庫管理界面.
現在網站只能在PC上顯示,如何能把網站放到互聯網上讓朋友也欣賞一下。這時就需要一款叫花生殼的軟體,提供動態的域名映射.
下載網址如下:http://hsk.oray.com/download/#type=windows|lan
下載完軟體按步驟安裝即可,這時候需要注冊一下花生殼會員,注冊時按網頁提示的步驟即可,用身份證注冊可以獲得一個免費域名。用注冊的賬號密碼登陸軟體。會出現以下界面。這里的網址是申請的免費域名。
在域名上右鍵,選擇新花生殼管理,填寫應用名稱,這個可以隨便填,內網主機為本機內網的ip地址,這時需要查看以下,win+R在cmd中輸入,ipconfig/all,
可以看到ipv4地址,填寫即可。埠為80埠。
同時,現在需要設置一下路由器。在瀏覽器輸入192.168.1.1。輸入路由器用戶名和密碼,一般都為admin。進入路由器界面。需要設置三個地方,首先是動態DNS,選擇服務商為花生殼,填寫用戶名密碼,驗證保存。然後是轉發規則中的虛擬伺服器,添加新條目,埠80,ip地址為內網ip。最後是,DMZ主機,設置開啟,ip為內網本機ip。
現在設置基本完成,這時就可以測試了。注意,要把防火牆關閉,否則外網還是訪問不了本機的網站。在控制面板中把防火牆關閉。現在可以寫一段html代碼,命名為index.html(注意此時先把index.php放到別的文件夾)放入wamp\www目錄中,來測試訪問。
最後,在瀏覽器輸入花生殼域名,看看是不是就能訪問了。同時也可以把自域名發送給朋友,讓他們幫測試一下。
❿ TCP伺服器是什麼
TCP指的是傳輸控制協議。它是一種面向連接導向的、可靠地及基於位元組流的運輸層通信協議。而在接觸TCP中還有UDP,UDP也是一項重要的傳輸協議。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端
1、提供IP環境下的數據可靠傳輸(一台計算機發出的位元組流會無差錯的發往網路上的其他計算機,而且計算機A接收數據包的時候,也會向計算機B回發數據包,這也會產生部分通信量),有效流控,全雙工操作(數據在兩個方向上能同時傳遞),多路復用服務,是面向連接,端到端的傳輸;
2、面向連接:正式通信前必須要與對方建立連接。事先為所發送的數據開辟出連接好的通道,然後再進行數據發送,就像打電話。
3、TCP支持的應用協議:FTP 文件傳送、RLogin 遠程登錄、SMTP POP3 電子郵件、NFS 網路文件系統、遠程列印、遠程執行、名字伺服器終端伺服器等服務類型。