windows 与 Linux SOCKET通讯
windows client 端口 // Def_win_client_socket_test.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <windows.h> #pragma comment(lib,"ws2_32.lib")
#define PORT 4000
#define IP_ADDRESS "192.168.227.136" int _tmain(int argc, _TCHAR* argv[])
{
WSADATA Ws;
SOCKET ClientSocket;
struct sockaddr_in ClientAddr;
int Ret = 0;
char SendBuffer[MAX_PATH]; if(WSAStartup(MAKEWORD(2,2),&Ws) != 0)
{
printf("Init winows socket failed::%d",GetLastError());
return -1;
}
// 0 表示系统自己选择协议
ClientSocket = socket(AF_INET,SOCK_STREAM,0); ClientAddr.sin_family = AF_INET;
ClientAddr.sin_addr.S_un.S_addr=inet_addr(IP_ADDRESS);
ClientAddr.sin_port=htons(PORT); printf("Connect to server...\n"); Ret = connect(ClientSocket,(struct sockaddr*)&ClientAddr, sizeof(ClientAddr));
if( Ret == SOCKET_ERROR)
{
printf("Connect Error::%d\n",GetLastError());
return -1;
}else
{
printf("Connect succeded! \n");
} while(1)
{
scanf("%s", SendBuffer); /* send data to server */
Ret = send(ClientSocket, SendBuffer, (int)strlen(SendBuffer), 0);
if ( Ret == SOCKET_ERROR )
{
printf("Send Info Error::%d\n", GetLastError());
break;
} if('q' == SendBuffer[0])
{
break;
}
}
closesocket(ClientSocket);
WSACleanup(); return 0;
}
编写的一个小程序 参考了网络上的一些文章,但是网络上的代码似乎设置于本机不同,在windows客户端这边做了些修改。
linux server 端口
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h> #define HELLO_WORLD_SERVER_PORT 4000
#define LENGTH_OF_LISTEN_QUEUE 20
#define BUFFER_SIZE 1024 int main(int argc, char **argv)
{
struct sockaddr_in server_addr;
int server_socket;
int opt = 1; bzero(&server_addr,sizeof(server_addr)); server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htons(INADDR_ANY);
server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT); /* create a socket */
server_socket = socket(PF_INET,SOCK_STREAM,0);
if( server_socket < 0)
{
printf("Create Socket Failed!");
exit(1);
} /* bind socket to a specified address*/
setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
if( bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr)))
{
printf("Server Bind Port : %d Failed!", HELLO_WORLD_SERVER_PORT);
exit(1);
} /* listen a socket */
if(listen(server_socket, LENGTH_OF_LISTEN_QUEUE))
{
printf("Server Listen Failed!");
exit(1);
} /* run server */
while (1)
{
struct sockaddr_in client_addr;
int client_socket;
socklen_t length;
char buffer[BUFFER_SIZE]; /* accept socket from client */
length = sizeof(client_addr);
client_socket = accept(server_socket, (struct sockaddr*)&client_addr, &length);
if( client_socket < 0)
{
printf("Server Accept Failed!\n");
break;
} /* receive data from client */
while(1)
{
bzero(buffer, BUFFER_SIZE);
length = recv(client_socket, buffer, BUFFER_SIZE, 0);
if (length < 0)
{
printf("Server Recieve Data Failed!\n");
break;
}else if (length < 0)
{
printf("Recv Buffer is %s\n",buffer);
break;
} if('q' == buffer[0])
{
printf("Quit from client!\n");
break;
} printf("%s\n", buffer);
} close(client_socket);
} close(server_socket);
return 0;
}
ubuntu 虚拟机12.06版本 及 windows 7 下测试通过
windows 与 Linux SOCKET通讯的更多相关文章
- Windows客户端 Linux服务器通讯 字符编码问题
Windows下的字符编码默认是gb2312 在Linux下需要转成utf8 才能正确的看到对应的中文编码 提供转换函数 /*------------------------------------- ...
- 实现windows和linux的NFS交互
说明:本文是Omni-NFS-X Windows与Linux间通讯的另一种方式和在windows中配置使用NFS客户端的杂交篇 概述 windows/winnt4.0/win2000与Linux/Fr ...
- 转:socket编程在windows和linux下的区别
如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗 ...
- Linux网络服务器epoll模型的socket通讯的实现(一)
准备写一个网络游戏的服务器的通讯模块,参考网上看到的一些代码,在linux下面实现一个多线程的epoll模型的socket通讯的代码,以下是第一部分多线程的切换代码: 1 #include <s ...
- socket编程在windows和linux下的区别
如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗 ...
- Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码
主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码: #include <stdio.h> #include <sys/types. ...
- 在windows下用C语言写socket通讯实例
原文:在windows下用C语言写socket通讯实例 From:Microsoft Dev Center #undef UNICODE #define WIN32_LEAN_AND_MEAN #in ...
- socket在windows下和linux下的区别
原文:socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2 ...
- 局域网内python socket实现windows与linux间简单的消息传送
有个需求,就是在windows上看见一篇介绍linux相关的文章,想在局域网内的另外一台linux电脑上尝试一下, 于是就需要把该网页链接发送给linux,不想一点一点敲链接,又苦于没有找到其它好的方 ...
随机推荐
- spring 事务传播
1.spring实现对事务的控制,使用的是代理的技术.通过生成的代理类来捕捉被代理类(也就是我们编写的类)的异常,决定事务的提交或回滚.从某一角度来说,spring事务是基于异常实现的.对于实现了接口 ...
- MySQL 事务 隔离级别
前两天面试,问到了四种隔离级别,当时觉得大多数数据库都为read committed,结果没想到mysql是个例外.在此做一下隔离级别和各种数据库锁的使用. 首先说一下ACID四大特性: 四大特性 ...
- 深入理解 mysql 索引
1.资源准备 FQ软件下载:蓝灯 2.红黑树模拟:https://www.cs.usfca.edu/~galles/visualization/RedBlack.html 3.B树模拟:https:/ ...
- 【Django】ModuleNotFoundError: No module named 'books_ordersschool'
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x00000 ...
- 二叉搜索树的后序遍历序列(python)
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. # -*- coding:utf-8 -*- cl ...
- 利用MATLAB截取一张复杂图片中想要的区域
A = imread('1.jpg'); imshow(A); [x,y] = ginput(2); %确定图像上的两点利用ginput函数,返回值是两点的坐标 pic_1 = imcrop(A ...
- python 学习笔记---Locust 测试服务端性能
由于人工智能的热度, python目前已经成为最受欢迎的编程语言,一度已经超越Java . 本文将介绍开源的python 测试工具: locust 使用步骤: 1. 安装python 3.0以上版本 ...
- 浅析Java 数组-基础详解
什么是数组:数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 数组:用来存储固定大小的同类型元素. 一 声明.创建,初始化Java 数组 写在前面 ...
- java ATM模拟程序
//基本功能已经完善,文件读取没有问题,文件重写尚未完成. Account类 public class Account { //初始化参数 private String accountID; priv ...
- Mysql的随机抽取
方法一 SELECT * FROM SHARE ORDER BY RAND( ) LIMIT 1; 在MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用R ...