windows网络编程
2015-12-05 20:47
274 查看
客户端:
服务器:
#include<stdio.h>
#include<winsock2.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
#define PORT 4567
#define ADDR "192.168.137.1"
int main()
{
WSADATA wsock;
SOCKET listensocket;
SOCKET newconnection;
SOCKADDR_IN serAddr;
SOCKADDR_IN cliAddr;
int cliAddrLen = sizeof(cliAddr);
int nRet = 0;
char buf[100];
cout << "服务端";
cout << ADDR << "-" << PORT << endl;
//下面初始化WinSock
cout << "初始化套接字..." << endl;
if (WSAStartup(MAKEWORD(2, 2), &wsock) != 0)
{
cout << "初始化失败" << endl;
return 0;
}
cout << "初始化成功" << endl;
//下面创建监听
cout << "创建TCP监听套接字..." << endl;
if ((listensocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
{
cout << "监听创建失败" << endl;
WSACleanup();
return 0;
}
cout << "TCP监听套接字创建成功" << endl;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(PORT);
serAddr.sin_addr.S_un.S_addr = inet_addr(ADDR);
//绑定监听套接字
cout << "绑定监听套接字..." << endl;
if (bind(listensocket, (SOCKADDR*)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
cout << "监听套接字绑定失败" << endl;
closesocket(listensocket);
WSACleanup();
return 0;
}
cout << "监听套接字绑定成功" << endl;
//创立监听
cout << "创建监听..." << endl;
if (listen(listensocket, 5) == SOCKET_ERROR)
{
cout << "监听创建失败" << endl;
closesocket(listensocket);
WSACleanup();
return 0;
}
cout << "监听创建成功" << endl;
//等待连接
cout << "等待连接..." << endl;
if ((newconnection = accept(listensocket, (SOCKADDR*)&cliAddr, &cliAddrLen)) == SOCKET_ERROR)
{
cout << "连接错误" << endl;
closesocket(listensocket);
WSACleanup();
return 0;
}
cout << "连接成功!" << endl;
cout << "连接信息:" << inet_ntoa(cliAddr.sin_addr)<<"-"<<ntohs(cliAddr.sin_port) << endl;
//这个程序只监听一个所以只监听第一个接收到连接的
closesocket(listensocket);
cout << "等待数据..." << endl;
for (int i = 0;;i++)
{
memset(buf, 0, sizeof(buf));
if ((nRet = recv(newconnection, buf, sizeof(buf), 0)) == SOCKET_ERROR)
{
cout << "数据接收错误" << endl;
closesocket(newconnection);
WSACleanup();
return 0;
}
cout << buf << endl;
//若发现exit退出
if (strcmp(buf, "exit") == 0)
{
cout << "正常退出" << endl;
break;
}
if ((nRet = send(newconnection, buf, strlen(buf), 0)) == SOCKET_ERROR)
{
cout << "发送失败" << endl;
}
}
closesocket(newconnection);
WSACleanup();
return 0;
}
#include<stdio.h> #include<stdlib.h> #include<iostream> #include<winsock2.h> #include<cstdio> using namespace std; #pragma comment(lib, "ws2_32.lib") #define PORT 4567 #define ADDR "192.168.137.1" int main() { WSADATA wsock; SOCKET sconnection; SOCKADDR_IN serAddr; int nRet = 0; char buf[100]; cout << "客户端"<<endl; //初始化套接字 cout << "初始化套接字..." << endl; if (WSAStartup(MAKEWORD(2, 2), &wsock) != 0) { cout << "初始化失败" << endl; return 0; } cout << "初始化成功" << endl; //下面创建连接套接字 cout << "创建TCP连接套接字..." << endl; if ((sconnection = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) { cout << "连接套接字创建失败" << endl; WSACleanup(); return 0; } cout << "TCP连接套接字创建成功" << endl; serAddr.sin_family = AF_INET; serAddr.sin_port = htons(PORT); serAddr.sin_addr.S_un.S_addr = inet_addr(ADDR); //下面链接服务器 cout << "连接服务器..." << inet_ntoa(serAddr.sin_addr) << "-" << htons(serAddr.sin_port) << endl; if (connect(sconnection, (SOCKADDR*)&serAddr, sizeof(serAddr)) == SOCKET_ERROR) { cout << "连接失败" << endl; closesocket(sconnection); WSACleanup(); return 0; } cout << "连接成功!" << endl; cout << "尝试发送数据" << endl; for (int i = 0;;i++) { memset(buf, 0, sizeof(buf)); cout << "输入信息:" << endl; cin >> buf; cout << "发送中.." << endl; if ((nRet = send(sconnection, buf, strlen(buf), 0)) == SOCKET_ERROR) { cout << "发送失败" << endl; closesocket(sconnection); WSACleanup(); return 0; } cout << "发送成功" << endl; if (strcmp(buf, "exit") == 0) { cout << "正常退出" << endl; break; } memset(buf, 0, sizeof(buf)); cout << "等待回应..." << endl; if ((nRet = recv(sconnection, buf, sizeof(buf), 0)) == SOCKET_ERROR) { cout << "接收错误" << endl; } cout << "回应:"; cout << buf << endl; } closesocket(sconnection); WSACleanup(); return 0; }
服务器:
#include<stdio.h>
#include<winsock2.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
#define PORT 4567
#define ADDR "192.168.137.1"
int main()
{
WSADATA wsock;
SOCKET listensocket;
SOCKET newconnection;
SOCKADDR_IN serAddr;
SOCKADDR_IN cliAddr;
int cliAddrLen = sizeof(cliAddr);
int nRet = 0;
char buf[100];
cout << "服务端";
cout << ADDR << "-" << PORT << endl;
//下面初始化WinSock
cout << "初始化套接字..." << endl;
if (WSAStartup(MAKEWORD(2, 2), &wsock) != 0)
{
cout << "初始化失败" << endl;
return 0;
}
cout << "初始化成功" << endl;
//下面创建监听
cout << "创建TCP监听套接字..." << endl;
if ((listensocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
{
cout << "监听创建失败" << endl;
WSACleanup();
return 0;
}
cout << "TCP监听套接字创建成功" << endl;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(PORT);
serAddr.sin_addr.S_un.S_addr = inet_addr(ADDR);
//绑定监听套接字
cout << "绑定监听套接字..." << endl;
if (bind(listensocket, (SOCKADDR*)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
cout << "监听套接字绑定失败" << endl;
closesocket(listensocket);
WSACleanup();
return 0;
}
cout << "监听套接字绑定成功" << endl;
//创立监听
cout << "创建监听..." << endl;
if (listen(listensocket, 5) == SOCKET_ERROR)
{
cout << "监听创建失败" << endl;
closesocket(listensocket);
WSACleanup();
return 0;
}
cout << "监听创建成功" << endl;
//等待连接
cout << "等待连接..." << endl;
if ((newconnection = accept(listensocket, (SOCKADDR*)&cliAddr, &cliAddrLen)) == SOCKET_ERROR)
{
cout << "连接错误" << endl;
closesocket(listensocket);
WSACleanup();
return 0;
}
cout << "连接成功!" << endl;
cout << "连接信息:" << inet_ntoa(cliAddr.sin_addr)<<"-"<<ntohs(cliAddr.sin_port) << endl;
//这个程序只监听一个所以只监听第一个接收到连接的
closesocket(listensocket);
cout << "等待数据..." << endl;
for (int i = 0;;i++)
{
memset(buf, 0, sizeof(buf));
if ((nRet = recv(newconnection, buf, sizeof(buf), 0)) == SOCKET_ERROR)
{
cout << "数据接收错误" << endl;
closesocket(newconnection);
WSACleanup();
return 0;
}
cout << buf << endl;
//若发现exit退出
if (strcmp(buf, "exit") == 0)
{
cout << "正常退出" << endl;
break;
}
if ((nRet = send(newconnection, buf, strlen(buf), 0)) == SOCKET_ERROR)
{
cout << "发送失败" << endl;
}
}
closesocket(newconnection);
WSACleanup();
return 0;
}
相关文章推荐
- wireshark 抓包分析 TCPIP协议的握手
- UI 网络请求
- iOS 网络之NSURLConnection
- Stanford UFLDL教程 神经网络向量化
- Android6.0新特性----OKHttp请求
- 深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测-ECCV 2014
- http_build_query()详细相关
- 介绍TCP/udp比较好的博客
- HTML5 块级元素与行内元素伦理片 http://www.dotdy.com/
- 151205http调试工具Charles Proxy用法详解
- android okhttp封装使用
- 17:网络编程
- 《TCP/IP详解 卷1:协议》 读书笔记 第十章 动态选路协议
- TCP/IP协议与OSI参考模型对应关系
- Stanford机器学习---第五讲. 神经网络的学习 Neural Networks learning
- Stanford机器学习---第四讲. 神经网络的表示 Neural Networks representation
- 深入分析JavaWeb Item9 -- HttpServletRequset详解
- linux网络连接配置
- JAVA通信编程(三)——TCP通讯
- JAVA通信编程(三)——TCP通讯