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网络通信分层为:应用层.网络层.数据链路层.物 ...
随机推荐
- KMP算法类习题——字符串匹配
Description For each prefix with length P of a given string S,if S[i]=S[i+P] for i in [0..SIZE(S)-p- ...
- openwrt 包makefile
$() 表示要执行的一条语句 $(if 条件, 成立执行, 失败执行) if条件分支 $(foreach 变量, 成员列表, 执行体) 成员遍历语句 可以看出,语句是可以嵌套使用的. ...
- python zookeeper 在 uwsgi中 watcher不生效
def code_watcher(handle,type, state, path): print "zk code watcher,path is: ",path #da ...
- (转) 三个nginx配置问题的解决方案
今天开启了nginx的error_log,发现了三个配置问题: 问题一: 2011/07/18 17:04:37 [warn] 2422#0: *171505004 an upstream respo ...
- Windows下的ls的命令
习惯了linux下的ls命令,windows的dir用的很不习惯,又不想装cygwin, bash,就想把dir重命名为ls,发现dos下有个命令doskey可以完成该功能.在命令提示符下敲: > ...
- Linux非root用户程序使用小于1024端口
在Linux下,默认端口1024下的是要在root下才能使用的,在其他用户下,如果尝试使用将会报错.在有的时候,我们可能考虑程序运行在root帐户下,可能会给Linux系统带来安全风险.那如何能够让非 ...
- vs找不到svn源代码管理插件之我见
使用svn要安装两个文件,一个客户端:TortoiseSVN-1.8.msi,一个插件:AnkhSvn-2.5.msi:两个都安装好之后,在vs的tool(工具)选项卡中,选择自定义,然后选择sour ...
- LVS + keepalived + tomcat负载均衡及高可用实现(初级)
1.首先检测Linux服务器是否支持ipvs 执行如下命令:modprobe -l|grep ipvs 输出: kernel/net/netfilter/ipvs/ip_vs.ko kernel/ne ...
- icecap录屏gif
百度云下载地址:http://pan.baidu.com/s/1jIeyb4q 之前写博客,只有文字,有些效果看不出来.有了这个gif录屏工具方便很多哦,嘿嘿
- shell 空格问题
1.定义变量时, =号的两边不可以留空格. eg: gender=femal------------right gender =femal-----------wrong gender= femal- ...
