winsock client & server
来源:互联网 发布:mysql latin1 编辑:程序博客网 时间:2024/04/29 03:15
// winsock client.cpp : 定义控制台应用程序的入口点。
//客户端实例
//vs2010编译通过
#include "stdafx.h"
#include <winsock2.h>
#include <stdio.h>
#define SERVPORT 5050 // 端口为5050
#define MAXDATASIZE 100
#define SERVIP "127.0.0.1" // 服务器IP地址为"127.0.0.1",注意使用inet_addr将IP地址转换为网络格式
#pragma comment(lib,"ws2_32.lib")
void main(int argc, char *argv[])
{
WSADATA wsaData;
SOCKET sConnect;
SOCKADDR_IN serverAddr;
int recvbytes;
char buf[MAXDATASIZE];
//初始化Windows Socket 2.2
WSAStartup(MAKEWORD(2,2), &wsaData);
// 创建一个新的Socket来连接服务器
sConnect = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
// 填写连接地址信息
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(SERVPORT);
serverAddr.sin_addr.s_addr = inet_addr(SERVIP);
memset(&(serverAddr.sin_zero), 0, sizeof(serverAddr.sin_zero));
// 向服务器发出连接请求
if (connect(sConnect, (SOCKADDR *)&serverAddr, sizeof(SOCKADDR)) == SOCKET_ERROR)
{
printf("connect failed!\n");
system("pause");
return;
}
// 接受服务器的回应消息
recvbytes = recv(sConnect, buf, MAXDATASIZE, 0);
if (recvbytes == SOCKET_ERROR)
{
system("pause");
printf("recv failed!\n");
}
else
{
buf[recvbytes] = '\0';
printf("%s\n",buf);
}
closesocket(sConnect);
// 释放Windows Socket DLL的相关资源
system("pause");
WSACleanup();
}
// winsock server.cpp : 定义控制台应用程序的入口点。
//服务器端实例
//vs2010端编译通过
#include "stdafx.h"
#include <winsock2.h>
#include <stdio.h>
#define SERVPORT 5050
#pragma comment(lib,"ws2_32.lib")
void main(void)
{
WSADATA wsaData;
SOCKET sListen; // 监听socket
SOCKET sClient; // 连接socket
SOCKADDR_IN serverAddr; // 本机地址信息
SOCKADDR_IN clientAddr; // 客户端地址信息
int clientAddrLen; // 地址结构的长度
int nResult;
// 初始化Windows Socket 2.2
WSAStartup(MAKEWORD(2,2), &wsaData);
// 创建一个新的Socket来响应客户端的连接请求
sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
// 填写服务器绑定的地址信息
// 端口为5050
// IP地址为INADDR_ANY,响应每个网络接口的客户机活动
// 注意使用htonl将IP地址转换为网络格式
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(SERVPORT);
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
memset(&(serverAddr.sin_zero), 0, sizeof(serverAddr.sin_zero));
// 绑定监听端口
nResult = bind(sListen, (SOCKADDR *)&serverAddr, sizeof(SOCKADDR));
if (nResult == SOCKET_ERROR)
{
printf("bind failed!\n");
return;
}
// 开始监听,指定最大接受队列长度5,不是连接数的上限
listen(sListen, 5);
// 接受新的连接
while(1)
{
clientAddrLen = sizeof (SOCKADDR);
sClient = accept(sListen, (SOCKADDR *)&clientAddr, &clientAddrLen);
if(sClient == INVALID_SOCKET)
{
printf("Accept failed!");
}
else
{
printf("Accepted client: %s : %d\n", inet_ntoa(clientAddr.sin_addr), ntohs(clientAddr.sin_port));
// 向客户端发送信息
nResult = send(sClient, "Connect success!", 16, 0);
if (nResult == SOCKET_ERROR)
{
printf("send failed!");
}
}
// 我们直接关闭连接,
closesocket(sClient);
}
// 并关闭监听Socket,然后退出应用程序
closesocket(sListen);
// 释放Windows Socket DLL的相关资源
WSACleanup();
}
- winsock client & server
- Running the Winsock Client and Server Code Sample
- Simple client-server network using C++ and Windows Winsock
- Winsock MSDN Sample (Client)
- Winsock select client
- winsock unblock client programing demo
- Client/Server
- server&&client
- client server
- Winsock MSDN Sample (Server)
- Winsock 学习笔记(二)Winsock Client Application
- winsock基础编程 -- client代码样例
- Simple Winsock select-modal server
- Winsock 学习笔记(三)Winsock Server Application
- java Tcp Client server
- Server Client Sockets
- FTP Server/Client
- client use server value
- 学生信息管理系统(c++)
- 久久网络收藏夹
- linux_rm
- form表单底下的button按钮点击自动提交恶心问题的解决
- 8版本控制工具svn
- winsock client & server
- verilog学习记(快速入门)
- install Python 3.3 on Ubuntu 12.04
- Entity Framework 实体关系总结
- 算数表达式逻辑表达式求值
- 10位顶级PHP大师的开发原则
- android 控件圆角的设置
- 简单的socket通信Android和Socket(一)
- Ubuntu(Linux)连接小米手机2(Android 4.0以上)管理文件的两种方式:MTP和WiFi FTP