tcp服务器端,客户端练习程序
2016-03-31 11:13
495 查看
不知道为何不能持续通信,只能通信两次好像就recv失败了,不知何故,继续学习吧。
tcp
服务器端
#include<WinSock2.h>
#include<stdio.h>
#include<Windows.h>
#include<iostream>
#pragma comment(lib,"WS2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;
SOCKET ListengingSock;
SOCKET Newconnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrlen = sizeof(ClientAddr);
int port = 5150;
char sendtext[16];
char recvtext[16];
if ((WSAStartup(MAKEWORD(2, 2),&wsaData)) != 0)
{
cout << "wsastarup error" << endl;
}
cout << "wsastarup successful" << endl;
if ((ListengingSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
{
cout << "listenging sock failed" << endl;
return 0;
}
cout << "listening sock successful" << endl;
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(port);
ServerAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
if ((bind(ListengingSock, (SOCKADDR*)&ServerAddr, sizeof(ServerAddr))) == SOCKET_ERROR)
{
cout << "bind error" << endl;
return 0;
}
cout << "bind successful" << endl;
if ((listen(ListengingSock, 5)) == SOCKET_ERROR)
{
cout << "listen failed" << endl;
return 0;
}
cout << "listen successful" << endl;
while (true)
{
if ((Newconnection = accept(ListengingSock, (SOCKADDR*)&ClientAddr, &ClientAddrlen)) == INVALID_SOCKET)
{
cout << "accept failed" << endl;
continue;
}
cout << "accept successful "<< inet_ntoa(ClientAddr.sin_addr)<< endl;
//printf("接收到一个连接:%s\r\n", inet_ntoa(ClientAddr.sin_addr));
if (recv(Newconnection, recvtext, strlen(recvtext), 0) == SOCKET_ERROR)
{
cout << "recv failed" << endl;
return 0;
}
cout << "recv successful:\n" << recvtext<< endl;
//recvtext[0] = 0;
cout << "输入发送数据" << endl;
cin >> sendtext;
if (send(Newconnection, sendtext, strlen(sendtext), 0) == SOCKET_ERROR)
{
cout << "send failed" << endl;
return 0;
}
cout << "send successful" << endl;
//sendtext[0] = 0;
closesocket(Newconnection);
}
closesocket(ListengingSock);
return 0;
}
tcp客户端
#include<WinSock2.h>
#include<stdio.h>
#include<Windows.h>
#include<iostream>
#pragma comment(lib,"WS2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;
SOCKET s;
SOCKADDR_IN ServerAddr;
int port = 5150;
char sendtext[16];
char recvtext[16];
if ((WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0)
{
cout << "wsastarup error" << endl;
}
cout << "wsastarup successful" << endl;
if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == SOCKET_ERROR)
{
cout << "sock error" << endl;
return 0;
}
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(port);
ServerAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if((connect(s,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr)))==SOCKET_ERROR)
{
cout << "connect fialed" << endl;
return 0;
}
while (true)
{
cout << "输入要发送的数据" << endl;
cin >> sendtext;
if ((send(s, sendtext, strlen(sendtext), 0)) == SOCKET_ERROR)
{
cout << "send error" << endl;
return 0;
}
cout << "send successful" << endl;
//sendtext[0] = 0;
if ((recv(s, recvtext, strlen(recvtext), 0)) == SOCKET_ERROR)
{
cout << "recv failed" << endl;
return 0;
}
cout << "接收到数据\n" << recvtext << endl;
//recvtext[0] = 0;
}
closesocket(s);
return 0;
}
tcp
服务器端
#include<WinSock2.h>
#include<stdio.h>
#include<Windows.h>
#include<iostream>
#pragma comment(lib,"WS2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;
SOCKET ListengingSock;
SOCKET Newconnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrlen = sizeof(ClientAddr);
int port = 5150;
char sendtext[16];
char recvtext[16];
if ((WSAStartup(MAKEWORD(2, 2),&wsaData)) != 0)
{
cout << "wsastarup error" << endl;
}
cout << "wsastarup successful" << endl;
if ((ListengingSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
{
cout << "listenging sock failed" << endl;
return 0;
}
cout << "listening sock successful" << endl;
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(port);
ServerAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
if ((bind(ListengingSock, (SOCKADDR*)&ServerAddr, sizeof(ServerAddr))) == SOCKET_ERROR)
{
cout << "bind error" << endl;
return 0;
}
cout << "bind successful" << endl;
if ((listen(ListengingSock, 5)) == SOCKET_ERROR)
{
cout << "listen failed" << endl;
return 0;
}
cout << "listen successful" << endl;
while (true)
{
if ((Newconnection = accept(ListengingSock, (SOCKADDR*)&ClientAddr, &ClientAddrlen)) == INVALID_SOCKET)
{
cout << "accept failed" << endl;
continue;
}
cout << "accept successful "<< inet_ntoa(ClientAddr.sin_addr)<< endl;
//printf("接收到一个连接:%s\r\n", inet_ntoa(ClientAddr.sin_addr));
if (recv(Newconnection, recvtext, strlen(recvtext), 0) == SOCKET_ERROR)
{
cout << "recv failed" << endl;
return 0;
}
cout << "recv successful:\n" << recvtext<< endl;
//recvtext[0] = 0;
cout << "输入发送数据" << endl;
cin >> sendtext;
if (send(Newconnection, sendtext, strlen(sendtext), 0) == SOCKET_ERROR)
{
cout << "send failed" << endl;
return 0;
}
cout << "send successful" << endl;
//sendtext[0] = 0;
closesocket(Newconnection);
}
closesocket(ListengingSock);
return 0;
}
tcp客户端
#include<WinSock2.h>
#include<stdio.h>
#include<Windows.h>
#include<iostream>
#pragma comment(lib,"WS2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;
SOCKET s;
SOCKADDR_IN ServerAddr;
int port = 5150;
char sendtext[16];
char recvtext[16];
if ((WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0)
{
cout << "wsastarup error" << endl;
}
cout << "wsastarup successful" << endl;
if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == SOCKET_ERROR)
{
cout << "sock error" << endl;
return 0;
}
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(port);
ServerAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if((connect(s,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr)))==SOCKET_ERROR)
{
cout << "connect fialed" << endl;
return 0;
}
while (true)
{
cout << "输入要发送的数据" << endl;
cin >> sendtext;
if ((send(s, sendtext, strlen(sendtext), 0)) == SOCKET_ERROR)
{
cout << "send error" << endl;
return 0;
}
cout << "send successful" << endl;
//sendtext[0] = 0;
if ((recv(s, recvtext, strlen(recvtext), 0)) == SOCKET_ERROR)
{
cout << "recv failed" << endl;
return 0;
}
cout << "接收到数据\n" << recvtext << endl;
//recvtext[0] = 0;
}
closesocket(s);
return 0;
}
相关文章推荐
- TCP/IP协议族的四个层次及不同层次的协议
- 基于 openssl + vs2013 https客户端 Demo
- 利用http协议实现图片窃取
- Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较
- java HTP协议之HttpConnUtil
- 批命令连接指定wifi 网络
- 【译】在ASP.Net和IIS中删除不必要的HTTP响应头
- Flash加载网络图片显示
- bzoj3597方伯伯运椰子
- Httpclient POST
- 安卓监听网络状态改变
- Apache搭建http协议版本库
- Runtime初涉之消息转发 http://www.cocoachina.com/ios/20151015/13769.html
- VirtualBox虚拟机网络设置
- 使用httpclient必须知道的参数设置及代码写法、存在的风险
- nginx使用ssl模块配置HTTPS支持
- 3月“.网络”域名总量十强:排名不变 万网降幅最大
- okHttp,greenDao,EventBus组合框架项目中实战
- Android网络通信框架LiteHttp2.0 开篇简介和大纲目录
- https处理