基于tcp的socket编程。
2015-10-11 18:04
525 查看
一。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 );
//WINDOWS SOCKET APPLICITION
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
/* The WinSock DLL is acceptable. Proceed. */
SOCKET sockSer;
sockSer = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSer,addrCli;
addrSer.sin_family = AF_INET;
addrSer.sin_port = htons(5050);
addrSer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
//addrSer.sin_addr.S_un.S_addr = INADDR_ANY;
bind(sockSer,(SOCKADDR*)&addrSer,sizeof(SOCKADDR));
listen(sockSer,5);//???????
cout<<"服务器等待客户端的连接......"<<endl;
SOCKET sockConn;
int len = sizeof(SOCKADDR);
sockConn = accept(sockSer,(SOCKADDR*)&addrCli,&len);
if(sockConn == INVALID_SOCKET)
{
cout<<"Server Accept Client Connect Fail!"<<endl;
WSACleanup( );
return;
}
else
{
cout<<"Server Accept Client Connect Success!"<<endl;
cout<<"Client ip:>"<<inet_ntoa(addrCli.sin_addr)<<endl;
cout<<"Client port:>"<<htons(addrCli.sin_port)<<endl;
}
char sendbuf[256];
char recvbuf[256];
while(1)
{
cout<<"Ser:>";
cin>>sendbuf;
send(sockConn,sendbuf,strlen(sendbuf)+1,0);
recv(sockConn,recvbuf,256,0);
cout<<"Cli:>"<<recvbuf<<endl;
}
closesocket(sockSer);
WSACleanup( );
}
client端:
#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 );
//WINDOWS SOCKET APPLICITION
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
/* The WinSock DLL is acceptable. Proceed. */
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 Fail!"<<endl;
WSACleanup( );
return;
}
else
{
cout<<"Client Connect Server Success!"<<endl;
}
char sendbuf[256];
char recvbuf[256];
while(1)
{
recv(sockCli,recvbuf,256,0);
cout<<"Ser:>"<<recvbuf<<endl;
cout<<"Cli:>";
cin>>sendbuf;
send(sockCli,sendbuf,strlen(sendbuf)+1,0);
}
closesocket(sockCli);
WSACleanup( );
}
#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 );
//WINDOWS SOCKET APPLICITION
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
/* The WinSock DLL is acceptable. Proceed. */
SOCKET sockSer;
sockSer = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSer,addrCli;
addrSer.sin_family = AF_INET;
addrSer.sin_port = htons(5050);
addrSer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
//addrSer.sin_addr.S_un.S_addr = INADDR_ANY;
bind(sockSer,(SOCKADDR*)&addrSer,sizeof(SOCKADDR));
listen(sockSer,5);//???????
cout<<"服务器等待客户端的连接......"<<endl;
SOCKET sockConn;
int len = sizeof(SOCKADDR);
sockConn = accept(sockSer,(SOCKADDR*)&addrCli,&len);
if(sockConn == INVALID_SOCKET)
{
cout<<"Server Accept Client Connect Fail!"<<endl;
WSACleanup( );
return;
}
else
{
cout<<"Server Accept Client Connect Success!"<<endl;
cout<<"Client ip:>"<<inet_ntoa(addrCli.sin_addr)<<endl;
cout<<"Client port:>"<<htons(addrCli.sin_port)<<endl;
}
char sendbuf[256];
char recvbuf[256];
while(1)
{
cout<<"Ser:>";
cin>>sendbuf;
send(sockConn,sendbuf,strlen(sendbuf)+1,0);
recv(sockConn,recvbuf,256,0);
cout<<"Cli:>"<<recvbuf<<endl;
}
closesocket(sockSer);
WSACleanup( );
}
client端:
#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 );
//WINDOWS SOCKET APPLICITION
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
/* The WinSock DLL is acceptable. Proceed. */
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 Fail!"<<endl;
WSACleanup( );
return;
}
else
{
cout<<"Client Connect Server Success!"<<endl;
}
char sendbuf[256];
char recvbuf[256];
while(1)
{
recv(sockCli,recvbuf,256,0);
cout<<"Ser:>"<<recvbuf<<endl;
cout<<"Cli:>";
cin>>sendbuf;
send(sockCli,sendbuf,strlen(sendbuf)+1,0);
}
closesocket(sockCli);
WSACleanup( );
}
相关文章推荐
- VMware虚拟机下RedHat6 配置网络实现远程连接
- 关于socket与网络协议的整理
- 第16章 网络IPC:套接字
- 详解为何iptables规则中端口和网络协议类型必须同时出现
- android访问网络图片
- poj1273网络流入门题
- 覆盖你 80 % 网络生活的,竟是这样一家神秘实验室
- tcp 客户、服务器程序示例
- 无线网络破解,破解wap密码
- 异常处理 续之(堆栈解退、auto_ptr)http://blog.csdn.net/feitianxuxue/article/details/7314079
- http中get、post、head对比
- iOS9下修改回HTTP模式进行网络请求
- 静态 http://www.cnblogs.com/lzjsky/archive/2011/01/24/1943199.html
- java中的main函数为什么是静态的 http://zhidao.baidu.com/link?url=k4HpxWZy71GfFpKCNXSvU-Ji9hqbWGWtNryPolNi3ziBPQ
- 静态成员 http://www.verydemo.com/demo_c92_i221125.html
- C++ 类的静态成员详细讲解 http://www.cnblogs.com/morewindows/archive/2011/08/26/2154198.html
- http请求状态
- Angularjs $http 请求数据(get.post)
- 开发与测试分析工具集锦(网络摘要)不断更新
- python 网络编程(二):IO 多路复用