windows 与 mac socket通信
#include <Winsock2.h>
#include <stdio.h> void main()
{
// 以下的几句都是固定的
WORD wVersionRequested;
WSADATA wsaData;
int err; wVersionRequested = MAKEWORD( , ); err = WSAStartup( wVersionRequested, &wsaData );//该函数的功能是加载一个Winsocket库版本
if ( err != ) {
return;
} if ( LOBYTE( wsaData.wVersion ) != ||
HIBYTE( wsaData.wVersion ) != ) {
WSACleanup( );
return;
} //真正socket编程部分
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,);//面向连接的可靠性服务SOCK_STRAM SOCKADDR_IN addrSrv;//存放本地地址信息的
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//htol将主机字节序long型转换为网络字节序
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons();//htos用来将端口转换成字符,1024以上的数字即可 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//将socket绑定到相应地址和端口上 listen(sockSrv,);//等待队列中的最大长度为5 SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR); while()
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);//建立一个新的套接字用于通信,不是前面的监听套接字
char sendBuf[];
sprintf(sendBuf,"Server IP is:%s",
inet_ntoa(addrClient.sin_addr));//inet_nota函数是将字符转换成ip地址 char recvBuf[];
recv(sockConn,recvBuf,,);//服务器从客户端接受数据
printf("%s\n",recvBuf); if(strcmp(recvBuf,"Reconnect")==)
{
Sleep();
strcpy(sendBuf,"Finished");
send(sockConn,sendBuf,strlen(sendBuf)+,);//服务器向客户端发送数据
} closesocket(sockConn);//关闭socket
}
}
Mac 端
#include <netinet/in.h> // for sockaddr_in
#include <sys/types.h> // for socket
#include <sys/socket.h> // for socket
#include <stdio.h> // for printf
#include <stdlib.h> // for exit
#include <string.h> // for bzero
/*
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
*/ #define HELLO_WORLD_SERVER_PORT 6001
#define BUFFER_SIZE 1024
#define FILE_NAME_MAX_SIZE 512 int main(int argc, char **argv)
{ //设置一个socket地址结构client_addr,代表客户机internet地址, 端口
struct sockaddr_in client_addr;
bzero(&client_addr,sizeof(client_addr)); //把一段内存区的内容全部设置为0
client_addr.sin_family = AF_INET; //internet协议族
client_addr.sin_addr.s_addr = htons(INADDR_ANY);//INADDR_ANY表示自动获取本机地址
client_addr.sin_port = htons(); //0表示让系统自动分配一个空闲端口
//创建用于internet的流协议(TCP)socket,用client_socket代表客户机socket
int client_socket = socket(AF_INET,SOCK_STREAM,);
if( client_socket < )
{
printf("Create Socket Failed!\n");
exit();
}
//把客户机的socket和客户机的socket地址结构联系起来
if( bind(client_socket,(struct sockaddr*)&client_addr,sizeof(client_addr)))
{
printf("Client Bind Port Failed!\n");
exit();
} //设置一个socket地址结构server_addr,代表服务器的internet地址, 端口
struct sockaddr_in server_addr;
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
if(inet_aton("192.168.1.149",&server_addr.sin_addr) == ) //服务器的IP地址来自程序的参数
{
printf("Server IP Address Error!\n");
exit();
}
server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT);
socklen_t server_addr_length = sizeof(server_addr);
//向服务器发起连接,连接成功后client_socket代表了客户机和服务器的一个socket连接
if(connect(client_socket,(struct sockaddr*)&server_addr, server_addr_length) < )
{
printf("Can Not Connect To %s!\n",argv[]);
exit();
} char buffer[BUFFER_SIZE];
bzero(buffer,BUFFER_SIZE);
strcpy(buffer, "Reconnect");
//向服务器发送buffer中的数据
send(client_socket,buffer,BUFFER_SIZE,); //从服务器接收数据到buffer中
bzero(buffer,BUFFER_SIZE);
int length = ;
if(recv(client_socket,buffer,BUFFER_SIZE,)>)
{
printf("Received %s\n",buffer);
}
//关闭socket
close(client_socket);
return ;
}
windows 与 mac socket通信的更多相关文章
- 成功使Linux服务端和Windows客户端建立socket通信
一.准备工作 1.一台装有虚拟机的Windows7操作系统,虚拟机中装的是CentOS6.5版本的Linux 2.Windows7已经装有java环境 二.编码 使用java编写socket通信的服务 ...
- windows下用c实现Socket通信
原文:windows下用c实现Socket通信 原本以为c是跨平台,所以,c在windows下和linux下的程序应该是类似于Java,什么都不用改变的,今儿才恍然大悟,他们的类库不一样啊-- 下面我 ...
- windows phone 8.1开发:socket通信聊天
本例用WPF程序做服务器端,windows phone程序做客户端.我们使用基于UDP协议的Socket通信.更多关于socket信息请查看:http://msdn.microsoft.com/zh- ...
- (8)Linux(客户端)和Windows(服务端)下socket通信实例
Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows Client端 #include <st ...
- 基于TCP与UDP协议的socket通信
基于TCP与UDP协议的socket通信 C/S架构与初识socket 在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是 C/S 架构,互联网中处处充满了 C/S 架构(Cl ...
- .NET开源高性能Socket通信中间件Helios介绍及演示
一:Helios是什么 Helios是一套高性能的Socket通信中间件,使用C#编写.Helios的开发受到Netty的启发,使用非阻塞的事件驱动模型架构来实现高并发高吞吐量.Helios为我们大大 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- C# socket通信
最近在研究socket,今天看到很好的一篇关于socket通信的文章,故收藏了,慢慢琢磨. 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: 1.TCP/IP层次模型 当然这里 ...
- Android开发--Socket通信
一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...
随机推荐
- projects(好代码好工具)每天进步一点点
1. 行人检测的,感觉这个代码不错,起码换个数据集测试也不错: https://bitbucket.org/shanshanzhang/code_filteredchannelfeatures 2. ...
- wireshark 无线抓包
1)抓取无线网卡的数据包(类似有线,仅抓取本网卡的数据包,适用与windows,linux) 1. 打开菜单项“Capture”下的子菜单“Capture Options”选项: 2. 找到设置面 ...
- Visual C++ 6.0中if语句的常见问题
# include <stdio.h> int main (void) { > )//如果在第四行加分号的话,编译的时候就会在第六行出错 printf("你好\n" ...
- 百度编辑器UEditor 点击上传图片选择框会延迟几秒才会显示 反应很慢(转)
转自:http://www.blogxuan.com/php/show/323.html UEditor 编辑器点击上传文件选择框会延迟几秒才会显示,反应很慢,上传图片选择框显示很慢. 1.uedit ...
- VS2013 Winform程序打包部署 InstallShield2015LimitedEdition
VS2013 Winform程序打包部署 VS2013默认是没有安装打包程序的,需要手动安装,我安装的是 InstallShield2015LimitedEdition. 1.点击解决方案,右键,选择 ...
- CentOS官网下载系统镜像
https://jingyan.baidu.com/article/1876c85279cedd890a13766c.html
- linux 部署
一.d2 安装之后的配置 centos系统安装后的基本配置: .常用软件安装: yum install -y bash-completion vim lrzsz wget expect net-too ...
- C++报错
编译的时候会报如下错误:warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable ...
- Exception和解决方案
org.hibernate.HibernateException: No Session found for current thread sessionFactory org.springframe ...
- python基础——1、python背景及特点——(YZ)
在之前的两种编程语言(C.Java)的学习之后,迎来新的一种编程语言的学习,但毕竟本着学一样一定要认真学的精神(期望是这样)首先,最最最少不了的是了解编程语言的背景.范围.特点.功能,等等.经过阅读资 ...