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网络通信分层为:应用层.网络层.数据链路层.物 ...
随机推荐
- hdu 1166 敌兵布阵(线段树详解)
Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...
- Moss列表查询,删除条目,更新条目。
基于Query语句的列表查询 function retrieveListItems(itemId) { var siteUrl=_spPageContextInfo.webServerRelat ...
- Hololens 开发环境配置
安装 Hololens SDK 转自 Vangos Pterneas, 4 Apr 2016 CPOL 5.00 (1 vote) vote 1vote 2vote 3vote 4vote 5 ...
- android 焦点问题
今天解决了一个Android平台下的焦点问题.发现其中关键问题的所在是Android的touchMode.从JavaSwing平台过来的人,都会关注setFocusable()和requestFocu ...
- mvc动态生成a标签,多个属性,多个querystring
1*服务端 客户端 跳转的url 2*服务端 客户端 跳转的url 3*服务端 客户端 跳转的url 4*服务端 客户端 跳转的url
- C#生成随机汉字
using System; using System.Text; namespace ConsoleApplication { class ChineseCode { ...
- 不同版本(2.3,2.4,2.5) web.xml 的web-app头信息
原址:点击打开链接 Servlet 2.3 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE w ...
- Hibernate 系列教程5-双向多对一
主要讲解inverse和cascade的用法 cascade定义的是关系两端对象到对象的级联关系: 而inverse定义的是关系和对象的级联关系(管理外键的值). inverse 属性默认是false ...
- Swift -> Let & Var 背后编程模式 探讨
简介 Swift中有两种声明“变量”的方式,这两种方式分别使用let和var这两个关键字.这应该是借鉴了Scala,因为它们和Scala的val和var有相同的作用.let被用于声明不变量,var被用 ...
- linux系统tomcat项目部署和tomcat访问日志
一.只用ip地址访问 先把端口号改成80,然后用 <Host name="localhost" appBase="webapps" 137 ...