linux中c语言和php语言通信代码UDP&TCP

http://blog.chinaunix.net/uid-24015214-id-2644174.html

UDP方式通信
 
服务器端server.c
 /*server.c*/
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
#include <stdlib.h> #define SERV_PORT 8000 int main()
{
int sockfd,n,servaddr_len;
char * server_ip = "127.0.0.1";
char buf[];
struct sockaddr_in server,client; sockfd = socket (AF_INET,SOCK_DGRAM,); bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(server_ip);
server.sin_port = htons(SERV_PORT); servaddr_len = sizeof(server); bind(sockfd,(struct sockaddr *) &server,servaddr_len);
listen(sockfd,);
while()
{
printf("等待读取数据.......\n"); servaddr_len = sizeof(client);
n = read(sockfd,buf,sizeof(buf));
write(sockfd,buf,n);
printf("读取的数据为:%s\n",buf);
bzero(buf,sizeof(buf));
}
close(sockfd);
return ;
}
 
 
客户端client.php
 <?php
$server_ip="127.0.0.1";
$port = 8000;
if($_POST['submit'])
{
$buf=trim($_POST['buf']);
$sockfd=socket_create(AF_INET,SOCK_DGRAM,SOL_UDP)or die("创建失败");
socket_connect($sockfd,$server_ip,$port)or die("连接错误");
socket_write($sockfd,$buf,strlen($buf))or die("写入错误"); socket_read($sockfd,$buf,80);
echo $buf;
$buf="";
socket_close($sockfd);
}
?>
<form action="client.php" method="post">
请选则发送方式:<br><input type=text name="buf">
<input type=submit name="submit" value="发送">
</form>
 
server.c文件通过gcc编译器编译
 
client.php通过浏览器运行
 
 
 
TCP方式
 
服务器端
 /*server.c*/
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
#include <stdlib.h> #define SERV_PORT 8000 int main()
{
int sockfd,n,servaddr_len,client_len,connfd;
char * server_ip = "127.0.0.1";
char buf[];
struct sockaddr_in server,client; sockfd = socket (AF_INET,SOCK_STREAM,); bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(server_ip);
server.sin_port = htons(SERV_PORT); servaddr_len = sizeof(server);
client_len=sizeof(client); bind(sockfd,(struct sockaddr *) &server,servaddr_len);
listen(sockfd,);
while()
{
bzero(buf,sizeof(buf));
printf("等待读取数据.......\n");
connfd=accept(sockfd,(struct sockaddr *)&client,&client_len);
n = read(connfd,buf,sizeof(buf));
// write(connfd,buf,n);
printf("读取的数据为:%s\n",buf); }
close(sockfd);
return ;
}
 
 
客户端
 <?php
$server_ip="127.0.0.1";
$port = 8000;
if($_POST['submit'])
{
$buf=trim($_POST['buf']);
$sockfd=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)or die("创建失败");
socket_connect($sockfd,$server_ip,$port)or die("连接错误");
socket_write($sockfd,$buf,strlen($buf))or die("写入错误"); $a=socket_read($sockfd,80);
echo $a;
$buf="";
socket_close($sockfd);
}
?>
<form action="tcpclient.php" method="post">
请选则发送方式:<br><input type=text name="buf">
<input type=submit name="submit" value="发送">
</form>
 
注意:1、tcp方式要设置安全级别及防火墙
    
       centOS5.4设置方法为:系统->管理->安全级别及防火墙->SElinux选项卡
                        设置为允许即可
     2、查看httpd_can_network_connect选项设置为on
       centOS5.4设置方法为:在终端执行setsebool httpd_can_network_connect on 即可
本人推荐使用第二种方法
    
 
     
 

linux中c语言和php语言通信代码UDP&TCP的更多相关文章

  1. 在linux中安装git,并将代码发布到github

    楼主Git小白,今天刚刚学习了git,虽然在工作中也许用不到,但是在学习的时候肯定会用到的,毕竟一个程序员首先就要整理自己的知识点,将美丽的代码分享与大家. 楼主是将Git安装在阿里云的centos7 ...

  2. linux中history加入显示时间命令代码

    source 空格 配置文件,则配置立即生效,这里的soruce也可以用英文状态下的点即“.”代替 历史命令history -w将现在的命令记录写入到history里面 如果在history里面加上时 ...

  3. linux grep find查找文件夹、代码中的某行/字符串

    本文转载于:https://blog.csdn.net/Mr_Cat123/article/details/80541658 在Linux中,由于文件很多,代码很长,可能我们只知道其中的一两个字符串, ...

  4. Linux中的两个经典宏定义:获取结构体成员地址,根据成员地址获得结构体地址;Linux中双向链表的经典实现。

    倘若你查看过Linux Kernel的源码,那么你对 offsetof 和 container_of 这两个宏应该不陌生.这两个宏最初是极客写出的,后来在Linux内核中被推广使用. 1. offse ...

  5. Linux 中使用 QT Charts 显示温度传感器

    前一篇笔记中实现了QT的Label控件显示CPU的温度,只能显示当前的温度,并不能反映CPU温度的变化情况,现在来实现使用QT Charts的曲线图实现一个实时曲线来显示CPU的温度. 添加对Qt C ...

  6. Linux中查找最耗性能的JAVA代码

    在这里总结一下查找Linux.Java环境下最耗CPU性能的代码段的方法.基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程).使用jstack把java线程堆栈给dump下来.然后,在堆 ...

  7. C语言和C++中动态申请内存

      在C语言和C++的动态内存的使用方法是不同的,在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h>  ...

  8. Linux中 SonarQube代码质量管理平台以及C++插件安装

    SonarQube是管理代码质量一个开源平台,可以快速的定位代码中潜在的或者明显的错误. SonarQube安装 1.环境准备 (1)sonarQube 下载地址https://www.sonarqu ...

  9. C语言和sh脚本的杂交代码

    在网上看到了一个把 C语言和bash杂并起来的例子,这个示子如下所示.在下面这个例子中,我们把脚本用#if 0这个预编译给起来,这样就不会让其编译到C语言中了. #if 0 echo "He ...

随机推荐

  1. 2019牛客多校第一场 A.Equivalent Prefixes

    题目描述 Two arrays u and v each with m distinct elements are called equivalent if and only if RMQ(u,l,r ...

  2. 行为型模式(九) 访问者模式(Visitor)

    一.动机(Motivate) 在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计.如何在不更 ...

  3. matlab的diff()函数

    diff():求差分 一阶差分 X = [1 1 2 3 5 8 13 21]; Y = diff(X) 结果: Y = 0 1 1 2 3 5 8 X = [1 1 1; 5 5 5; 25 25 ...

  4. 【Python数据挖掘】第三篇--Numpy 和 可视化

    一.Numpy 数组是一系列同类型数据的集合,可以被非零整数进行索引,可以通过列表进行数组的初始化,数组也可以通过索引进行切片. Numpy提供了几乎全部的科学计算方式. # numpy 导入方式: ...

  5. CSP-J总结&题解

    总结: 这一次,最后一次,还是不行啊. 文件操作方面:没有FCLOSE,血的教训. 考场复盘: 首先一二题没什么好讲的,秒切.但是第三题由于一开始看出来是完全背包,但是好像又不是,去年又有摆渡车阴影, ...

  6. C++问题--error LNK2019: 无法解析的外部符号 __imp__wsprintfW

    一.问题 当编译运行C++连接Redis时,出现错误Win32_Interop_d.lib(Win32_ANSI.obj) : error LNK2019: 无法解析的外部符号 __imp__wspr ...

  7. Spoj PRIME1 - Prime Generator

    题意翻译 求给定的两个数之间的素数 Translated by @kaiming 题目描述 Peter wants to generate some prime numbers for his cry ...

  8. AtCoder Grand Contest 018题解

    传送门 \(A\) 根据裴蜀定理显然要\(k|\gcd(a_1,...,a_n)\),顺便注意不能造出大于\(\max(a_1,...,a_n)\)的数 int n,g,k,x,mx; int mai ...

  9. (11)打鸡儿教你Vue.js

    表单 v-model 指令在表单控件元素上创建双向数据绑定 <div id="app"> <p>单个复选框:</p> <input typ ...

  10. P1504 积木城堡

    原题链接  https://www.luogu.com.cn/problem/P1504 闲话时刻 这道题是一道 暴力 dp好题,dp 的方法和平常的不大一样,也许是我的脑回路清奇,总之还是值得做一下 ...