Client与Server
监听套接字,通讯套接字,初始化网卡,多线程。想查自己的IP,ipconfig
服务端
#include "stdafx.h"
#include <WinSock2.h> //套接字 socket CS--->Client Server
#include <iostream>
#include <Windows.h>
using namespace std; #pragma comment(lib,"ws2_32.lib") //动态库的静态加载 DWORD WINAPI THreadFunction(LPVOID lParam);
SOCKET ClientSocket;
int main()
{
//如果要使用ws2_32.lib模块下的函数时,要初始化该模块 WSADATA wsaData = {};
WORD wVersion = MAKEWORD(,); //宏,第一个2放在低8位上,第二个放在高8位上。 if(WSAStartup(wVersion,&wsaData)!=) //一参数为WORD类型,IN,需要赋好值传进来,二参数为LP指针,OUT,需要初始化,传进来接受数据
{
printf("Init Socket Error\r\n");
return ;
} //返回值为0,成功
//套接字相当于保安
SOCKET ListenSocket;//监听套接字 Server socket大写为数据类型,小写为函数 (数据流) (数据报)
ListenSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //创建监听套接字,第一参数服务于什么协议是TCP还是UDP,第二参数中SOCK_STREAM流传送适用于TCP,一个一个,SOCK_DGRAM报传送适用于UDP,一页一页的
if(ListenSocket==INVALID_SOCKET) //创建失败,套接字不存在
{
WSACleanup();
return ;
}
//初始化网卡,相当于给保安建个房子
SOCKADDR_IN LocalAddress;
LocalAddress.sin_family = AF_INET; //IP不要写死
LocalAddress.sin_addr.S_un.S_addr = INADDR_ANY; //传IP地址的两种方式,直接强制转换为u_long型,或者像下面一样一个一个输
LocalAddress.sin_port = htons(); // Host To net string //端口连接,不能冲突(0~1024不要用,已被买断,60000多后面的端口也不要用,被QQ买断) /*
LocalAddress.sin_addr.S_un.S.un_b.s_b1 = '192';
LocalAddress.sin_addr.S_un.S.un_b.s_b2 = '168';
LocalAddress.sin_addr.S_un.S.un_b.s_b3 = '1';
LocalAddress.sin_addr.S_un.S.un_b.s_b4 = '100';
*/ //绑定 让保安住到房子里 大数据小指针,解出三成员
if(bind(ListenSocket,(sockaddr*)&LocalAddress,sizeof(SOCKADDR_IN))==SOCKET_ERROR)
{
closesocket(ListenSocket); //套接字存在,关闭套接字回收资源
WSACleanup();
return ;
} //监听
listen(ListenSocket,); //队列里面有多少未决的连接 //Block 阻塞函数,信号不到达,得不到返回 TCP 上线请求
SOCKADDR_IN RemoteAddress; //客户端的IP地址
int iRemoteAddressLen = sizeof(SOCKADDR_IN);
ClientSocket = accept(ListenSocket,(sockaddr*)&RemoteAddress,&iRemoteAddressLen); //返回值为套接字 //启动一个线程
CreateThread(NULL,,(LPTHREAD_START_ROUTINE)THreadFunction,NULL,,NULL); while(true)
{
char szBufferData[0x1000] = {};
scanf("%s",szBufferData); send(ClientSocket,szBufferData,strlen(szBufferData),);
}
WSACleanup(); //库的回收
return ;
} DWORD WINAPI THreadFunction(LPVOID lParam)
{
while(true)
{
char szBufferData[0x1000] = {};
int iReturn = recv(ClientSocket,szBufferData,0x1000,);
szBufferData[iReturn] = '\0';
printf("%s\r\n",szBufferData);
}
} 客户端
#include "stdafx.h"
#include <WinSock2.h> //套接字 socket
#include <iostream>
#include <Windows.h>
using namespace std; #pragma comment(lib,"ws2_32.lib") //动态库的静态加载 DWORD WINAPI THreadFunction(LPVOID lParam);
SOCKET ClientSocket;//通讯套接字 Client
int main()
{
//如果要使用ws2_32.lib模块下的函数时,要初始化该模块 WSADATA wsaData = {};
WORD wVersion = MAKEWORD(,); if(WSAStartup(wVersion,&wsaData)!=)
{
printf("Init Socket Error\r\n");
return ;
} ClientSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(ClientSocket==INVALID_SOCKET) //创建通讯套接字
{
WSACleanup();
return ;
}
//初始化网卡
SOCKADDR_IN ServerAddress;
ServerAddress.sin_family = AF_INET;
ServerAddress.sin_addr.S_un.S_addr = inet_addr("192.168.0.102");
ServerAddress.sin_port = htons(); connect(ClientSocket,(sockaddr*)&ServerAddress,sizeof(SOCKADDR_IN)); //返回值为int CreateThread(NULL,,(LPTHREAD_START_ROUTINE)THreadFunction,NULL,,NULL); while(true)
{
char szBufferData[0x1000] = {};
int iReturn = recv(ClientSocket,szBufferData,0x1000,);
szBufferData[iReturn] = '\0';
printf("%s\r\n",szBufferData);
}
WSACleanup(); //库的回收
return ;
} DWORD WINAPI THreadFunction(LPVOID lParam)
{
while(true)
{
char szBufferData[0x1000] = {};
scanf("%s",szBufferData); send(ClientSocket,szBufferData,strlen(szBufferData),);
}
}

Client与Server的更多相关文章
- UDP编程中client和server中使用recvfrom和sendto的区别
client中: sendto(sfd,buf,strlen(buf),0,(struct sockaddr *)&saddr,len); recvfrom(sfd,buf ...
- tmux protocol version mismatch (client 7, server 6)
$ tmux attach protocol version mismatch (client 7, server 6) $ pgrep tmux 3429 $ /proc/3429/exe atta ...
- New full duplex HTTP tunnel implementation (client and server)
https://issues.jboss.org/browse/NETTY-246?page=com.atlassian.jirafisheyeplugin:fisheye-issuepanel —— ...
- jvm的client和server
最近研究c++代码调用java的jar,发现64位的下的jvm在server路径,而32位的jvm则存在client路径下面,于是十分好奇,查了下,这里做个记录 JVM Server模式与client ...
- Android简单的聊天室开发(client与server沟通)
请尊重他人的劳动成果.转载请注明出处:Android开发之简单的聊天室(client与server进行通信) 1. 预备知识:Tcp/IP协议与Socket TCP/IP 是Transmission ...
- The client and server cannot communicate, because they do not possess a common algorithm
The client and server cannot communicate, because they do not possess a common algorithm This was re ...
- go http client, http server
Go语言中的HTTP client, server非常简单.具体如下. HTTP Server package main import ( "fmt" "html&quo ...
- onvif协议client与server对接
happytimesoft有完整的c语言开发的onvif client和server,一共1000$,真便宜,haha. http://www.happytimesoft.com/products/m ...
- 带入gRPC:gRPC Streaming, Client and Server
带入gRPC:gRPC Streaming, Client and Server 原文地址:带入gRPC:gRPC Streaming, Client and Server 前言 本章节将介绍 gRP ...
- ESP8266 station模式下建立client、server TCP连接
程序实现内容: 1.在station模式下,ESP8266作为client.server进行TCP连接2.实现数据的发送.接收(同时回传)实现思路:TCP网络通信分层为:应用层.网络层.数据链路层.物 ...
随机推荐
- liunx 内存文件 tmpfs
tmpfs是Linux/Unix系统上的一种基于内存的文件系统.tmpfs可以使用您的内存或swap分区来存储文件 1 创建将被挂载的文件 mkdir /tmp/tmpfs/ 2 写入测试文件内容.大 ...
- Jquery.Linq用法
下载:http://linqjs.codeplex.com/ LINQ Pad Enumerable.Range(0, 20).Where("$ % 3 == 0").Select ...
- sqlserver低版本生成插入脚本
--将表数据生成SQL脚本的存储过程 CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS declare @column varchar( ...
- PHP扩展开发-简单类扩展
今天来学习简单类扩展开发 实现目标为如下php的类 <?php class classext(){ private $username; CONST URL="http://www.g ...
- J2EE判断重复的数据
import java.util.ArrayList; import java.util.List; import org.junit.Test; /** * 判断重复的数据 * @author Ya ...
- on使用详解
on()是bind(),live(),delegate()的替代品,1.7及1.7以后使用on() bind() 绑定元素 live() 为元素附加事件,匹配选择器的当前及未来的元素(比如由脚本创建的 ...
- redis采用序列化方案存对象
前几天被问到这样一个问题,redis怎么存对象,平时也没怎么注意,只知道redis存字符之类的,不过就是根据键存取值,不过对象的话还是不同的 首先来了解一下为什么要实现序列化 为什么要实现序列化接口 ...
- LightOJ 1370 Bi-shoe and Phi-shoe 数论
题目大意:f(x)=n 代表1-x中与x互质的数字的个数.给出n个数字a[i],要求f(x)=a[i],求x的和. 思路:每个素数x 有x-1个不大于x的互质数.则f(x)=a[i],若a[i]+1为 ...
- getByClassName2016/4/21
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- Hrbustoj 2266 Legendary Weights(辗转相除求最大公约数)
题意:这个题目的意思是给出一些砝码,问我们能不能根据这些砝码称量出任意重量的物品,最大公约数并不难求,难的在于如何建立这个模型. 思路:根据数论的基础知识,两个数a,b的最大公约数是a*x + b*y ...
