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通讯的更多相关文章

  1. Windows客户端 Linux服务器通讯 字符编码问题

    Windows下的字符编码默认是gb2312 在Linux下需要转成utf8 才能正确的看到对应的中文编码 提供转换函数 /*------------------------------------- ...

  2. 实现windows和linux的NFS交互

    说明:本文是Omni-NFS-X Windows与Linux间通讯的另一种方式和在windows中配置使用NFS客户端的杂交篇 概述 windows/winnt4.0/win2000与Linux/Fr ...

  3. 转:socket编程在windows和linux下的区别

    如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗 ...

  4. Linux网络服务器epoll模型的socket通讯的实现(一)

    准备写一个网络游戏的服务器的通讯模块,参考网上看到的一些代码,在linux下面实现一个多线程的epoll模型的socket通讯的代码,以下是第一部分多线程的切换代码: 1 #include <s ...

  5. socket编程在windows和linux下的区别

    如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗 ...

  6. Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码

    主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码: #include <stdio.h> #include <sys/types. ...

  7. 在windows下用C语言写socket通讯实例

    原文:在windows下用C语言写socket通讯实例 From:Microsoft Dev Center #undef UNICODE #define WIN32_LEAN_AND_MEAN #in ...

  8. socket在windows下和linux下的区别

    原文:socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h    错误处理:errno.h 2 ...

  9. 局域网内python socket实现windows与linux间简单的消息传送

    有个需求,就是在windows上看见一篇介绍linux相关的文章,想在局域网内的另外一台linux电脑上尝试一下, 于是就需要把该网页链接发送给linux,不想一点一点敲链接,又苦于没有找到其它好的方 ...

随机推荐

  1. 跨时代的分布式数据库 – 阿里云DRDS详解(转)

    原文章地址:https://www.csdn.net/article/a/2015-08-28/15827676 跨时代的分布式数据库 – 阿里云DRDS详解 发表于2015-08-28 18:39| ...

  2. Android Studio 插件-Android Styler 的使用 (转)

    作用:把 xml文件 转为 style 截图保留 使用方法 使用方法:选中xml代码 按下 Ctrl+Shift+D 转自:http://blog.csdn.net/zxwd2015/article/ ...

  3. Neumann's Principle and Curie laws

    Neumann's Principle Neumann's principle, or principle of symmetry, states that, if a crystal is inva ...

  4. cdh5.13.1 升/降级SPARK2 (parcel安装的同理)

    下载相关的CSD包与parcel包.parcel包SHA 放置在相关位置. 注意:重启cloudera-scm-server 从parcel 里删除旧包,启用新包 csd目录里其它JAR包要删除

  5. 全国高校绿色计算大赛 预赛第一阶段(C++)第1关:将字符串反转

    挑战任务 将输入的字符串str进行反转. 编程要求 补全右侧vector<char> inversion(string str)函数实现字符串的反转并返回反转之后的字符串,其中函数参数st ...

  6. 利用MATLAB截取一张复杂图片中想要的区域

    A = imread('1.jpg'); imshow(A); [x,y] = ginput(2);    %确定图像上的两点利用ginput函数,返回值是两点的坐标 pic_1 = imcrop(A ...

  7. javascript简单的滑动效果

    利用setInterval实现简单的滑动效果 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. Apache+PHP+MySQL环境搭建

    准备安装包:Apache: apache_2.2.11-win32.msi (http://pan.baidu.com/s/1nvdiNcH)PHP: php-5.2.5-Win32.zip (htt ...

  9. 利用crontab每天定时备份MySQL数据库

    当数据库服务器建立并正式投入生产使用后,我们不得不担忧一个问题:当数据库遭到破坏后,怎样安然恢复到最后一次正常的状态,使得数据的损失达到最小. 我这里以本博客的wordpress数据为例,来讨论并实现 ...

  10. f5双机配置

    1.1)要确认2 台设备的型号及版本完全一致! 2)2台设备分别取名f5_4.com 和f5_3.com,并将时区修改成上海时区 注:设备的hostname不能随便修改. 3)VLAN配置 由于当前环 ...