基于TCP的网络通信(SCOKET)
2015-08-08 15:59
399 查看
基于TCP协议的网络通信
利用SOCKET套接字实现客户端与服务器间的连接1、 面向连接编程(TCP)面向连接的网络应用程序开发流程比较固定,需要开发者创建服务器与客户端两个应用程序,通过网络实现进程间的通讯。● 服务器端流程① 创建套接字(socket)② 服务绑定(bind)③ 服务侦听(listen)④ 处理新到连接(accept)⑤ 数据收发(recv\send)⑥ 套接字关闭(close)● 客户端流程① 客户端套接字创建(socket)② 发起连接 (connect)③ 数据发收(send\recv)④ 套接字关闭(close)
CLIENT:
#include <windows.h>#include <string.h>using namespace std;#pragma comment(lib,"ws2_32.lib")void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ){return;}if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ){WSACleanup( );return;}SOCKET sockCli;sockCli = socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSer;addrSer.sin_family = AF_INET;addrSer.sin_port = htons(5050);addrSer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");int res = connect(sockCli,(SOCKADDR*)&addrSer,sizeof(SOCKADDR));if(res != 0){cout<<"Client Connect Server Failed!"<<endl;}else{cout<<"Client Connect Server Success!"<<endl;}char sendbuf[256];char recvbuf[256];while(1){recv(sockCli,recvbuf,256,0);cout<<"Server:> "<<recvbuf<<endl;cout<<"Client:> ";cin>>sendbuf;send(sockCli,sendbuf,strlen(sendbuf)+1,0);}closesocket(sockCli);WSACleanup();}SERVER:
#include <iostream>#include <windows.h>using namespace std;#pragma comment(lib,"ws2_32.lib")void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ){return;}if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ){WSACleanup( );return;}SOCKET sockSer;sockSer = socket(AF_INET,SOCK_STREAM,0);//TCP/IPSOCKADDR_IN addrSer;SOCKADDR_IN addrCli;addrSer.sin_family = AF_INET;addrSer.sin_port = htons(5050);//host to net shortaddrSer.sin_addr.S_un.S_addr = inet_addr("192.168.0.144");bind(sockSer,(SOCKADDR*)&addrSer,sizeof(SOCKADDR));listen(sockSer,5);cout<<"Server Wait Client Connect"<<endl;SOCKET sockConn;int len = sizeof(SOCKADDR);sockConn = accept(sockSer,(SOCKADDR*)&addrCli,&len);if(sockConn == INVALID_SOCKET){cout<<"Server Accept Client Connect failed"<<endl;closesocket(sockSer);WSACleanup();return;}else{cout<<"Server Accept Client Connect Success!"<<endl;}char sendBuf[256];char recvBuf[256];while(1){cout<<"Ser :> ";cin>>sendBuf;send(sockConn, sendBuf, 256, 0);recv(sockConn, recvBuf, 256, 0);cout<<"Cli :>"<<recvBuf<<endl;}closesocket(sockSer);WSACleanup();}
相关文章推荐
- iOS多线程与网络开发之小文件上传
- HTTP请求:GET与POST方法的区别
- Android网络连接之HttpURLConnection和HttpClient
- hdu-3416-Marriage Match IV-(求最小割)-网络流模板
- Socket连接与HTTP连接
- android之HttpURLConnection
- 神经网络入门 第二部分
- Java网络编程概览
- 神经网络入门 第一部分
- WEB程序会话管理--HttpSession和Cookie
- Java网络编程简介
- Java TCP通信
- 利用HttpClient抓取话费详单等信息
- TCP/IP详解学习笔记--TCP的坚持和保活定时器
- HTTP协议
- 网络编程TCP(一)
- 从Sql Server通过HTTP推送数据到网页
- 2015.08.07网络编程read()函数详解
- python网络编程
- HTTP协议之Content-Encoding