简单实现客户端服务端互联通信

 /*服务端程序*/
#include <stdio.h>
#include <stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include <string.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>

int main(void)
{
  int sockfd,ret,newfd;
  int readlen;
  int theirlen;
  char recv[100]={0};
  struct sockaddr_in myaddr;
  struct sockaddr_in theiraddr;
  if((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0)
  {
    printf("socket failed(%s)\n", strerror(errno));
    exit(0);
  }
  memset(&myaddr,0,sizeof(myaddr));
  myaddr.sin_family=AF_INET;
  myaddr.sin_port =htons(3490);
  myaddr.sin_addr.s_addr=htonl(INADDR_ANY);
  if((ret=bind(sockfd,(struct sockaddr *)&myaddr,sizeof(myaddr))) < 0)
  {
    printf("bind failed\n");
         exit(0);
  }
  if((ret=listen(sockfd,10))  < 0)
  {
    printf("listen failed\n");
    exit(0);
   }
  theirlen=sizeof(theiraddr);
  if((newfd=accept(sockfd,(struct sockaddr *)&theiraddr,&theirlen))  < 0)
  {
    printf("accept failed\n");
    exit(0);
  }
  while(1)
  {
    memset(recv,0,sizeof(recv));
    readlen=read(newfd,recv,sizeof(recv));
    fputs(recv,stdout);
    write(newfd,recv,readlen);
  }
  close(newfd);
  close(sockfd);

  return 0;

}

/*客户端程序*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>

int main(void)
{
  int sockfd,ret;
  int readlen;
  char send[100]={0};
  char recv[100]={0};
  struct sockaddr_in myaddr;
  if((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0)
  {
    printf("socket failed\n");
    exit(1);
  }
  memset(&myaddr,0,sizeof(myaddr));
  myaddr.sin_family=AF_INET;
  myaddr.sin_port =htons(3490);
  myaddr.sin_addr.s_addr=inet_addr("192.168.1.110");

  if((ret=connect(sockfd,(struct sockaddr *)&myaddr,sizeof(myaddr))) < 0)
  {
    printf("connect failed\n");
              exit(1);
       }
  while(1)
  {
    memset(recv,0,sizeof(recv));
    memset(send,0,sizeof(send));
    if(fgets(send,sizeof(send),stdin) !=NULL)
    {
      write(sockfd,send,sizeof(send));
      read(sockfd,recv,sizeof(recv));
      fputs(recv,stdout);
    }
  }
  close(sockfd);
  return 0;
}

代码完整,可直运行

原文地址:https://www.cnblogs.com/cyyljw/p/9188590.html

时间: 2024-11-13 04:26:59

简单实现客户端服务端互联通信的相关文章

Netty(二):简单的客户端服务端demo

使用Java IO实现客户端服务端 服务端监听端口 客户端连接服务端 客户端循环写数据到服务端 import java.io.IOException; import java.net.Socket; /** * @author ko */ public class Client { private static final String HOST = "127.0.0.1"; private static final int PORT = 8000; private static fi

linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)

单客户端和服务端的通信(基于UDP)   代码 服务端代码socket3.c #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<unistd.h> #include<stdlib.h> #include<stdio.h> #include<string.h> #in

JointCode.Shuttle,一个简单高效的跨 AppDomain 通信的服务框架

JointCode.Shuttle 是一个用于 AppDomain 间通信的服务架构. 1. 什么情况下使用 JointCode.Shuttle 在 .net / mono 开发中,一般不太需要使用额外的 AppDomain,但在一些 特定情况下,让代码运行在新的 AppDomain 中也许是一个好的选择. 当代码需要跨越 AppDomain 边界访问另一个 AppDomain 时,便产生了跨 AppDomain 通信的问题,JointCode.Shuttle 正是专为此目的而开发的一个服务框架

netty实现客户端服务端心跳重连

使用netty实现客户端服务端心跳重连 前言: 公司的加密机调度系统一直使用的是http请求调度的方式去调度,但是会出现网络故障导致某个客户端或者服务端断线的情况,导致很多请求信息以及回执信息丢失的情况,接着我们抛弃了http的方式,改为Tcp的方式去建立客户端和服务器之间的连接,并且要去实现断线重连的功能,经过讨论后决定使用java中成熟的nio框架 – netty去解决这一系列的问题. 1.       netty简单介绍: 在百度中对netty的解释是: Netty是由JBOSS提供的一个

用PHP的socket实现客户端到服务端的通信

服务端 <?php error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); //本地IP $address = 'localhost'; //设置用111端口进行通信 $port = 111; //创建SOCKET if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { echo "socket创建失败原因 " . socket

MVC验证10-到底用哪种方式实现客户端服务端双重异步验证

原文:MVC验证10-到底用哪种方式实现客户端服务端双重异步验证 本篇将通过一个案例来体验使用MVC的Ajax.BeginForm或jQuery来实现异步提交,并在客户端和服务端双双获得验证.希望能梳理.归纳出一个MVC异步验证的通用解决思路.本篇主要涉及: 1.通过Ajax.BeginForm()方式,返回部分视图显示验证信息.2.通过jQuery+Html.BeginForm()方式,返回部分视图显示验证信息.3.通过jquery,返回json字符串,json字符串中包含部分视图及验证信息.

socket编程,简单多线程服务端测试程序

socket编程,简单多线程服务端测试程序 前些天重温了MSDN关于socket编程的WSAStartup.WSACleanup.socket.closesocket.bind.listen.accept.recv.send等函数的介绍,今天写了一个CUI界面的测试程序(依赖MFC)作为补充.程序功能简介如下: 1:一个线程做监听用. 2:监听线程收到客户端连接后,创建新线程接收客户端数据.所有对客户端线程将加入容器,以便管理. 3:服务端打印所有客户端发来的信息. 4:服务端CUI界面输入数字

GCDAynscSocket简单使用-服务端

距离上次写<GCDAynscSocket简单使用-服务端>差不多一个月了,现在把服务端的介绍给补上. 服务端的介绍比较简单,因为服务端和客户端的接收和发送数据的方法是一样的,不同的地方在于服务端是开启一个服务被动的等待客户端的接入.所以只介绍一下如何开启和关闭服务. 1.开启服务 GCDAynscSocket封装的非常好了,大部分情况下我们只要调用它的接口就可以了. 开启服务可调用的方法: /** * Tells the socket to begin listening and accept

最简单的TTcpServer与TTcpClient通信实例-Delphi

unit TcpSCDemo;//最简单的TTcpServer与TTcpClient通信实例-Delphi //Borland推出TTcpServer与TTcpClient作为主要的网络通信控件,意味着这两个控件有很大的优越性,//但是有关这两个控件的资料非常少见,很多人都在问一个相同的问题:TcpServer怎么样向TcpClient发送数据?//网上的回答千奇百怪,归纳起来有三种://1.参考delphi自带的netchat.例子中TcpServer只收不发,答题得分0.//2.用indy或