Linux下TCP/IP网络编程

原创 2015年07月06日 20:01:00

客户端代码:

#include<stdio.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
void error_handling(char* message);
int main(int argc, char* argv[]) 
{
    int clnt_sock;
    struct sockaddr_in serv_addr;
    char message[30];
    int str_len;
    if(argc!=3)
    {
        printf("Usage : %s <ip> <port>\n",argv[0]);
        exit(1);
    }
    clnt_sock=socket(PF_INET, SOCK_STREAM, 0);
    if(clnt_sock==-1)
    error_handling("socket() error!");
//  char* serv_ip="192.168.0.235";
    memset(&serv_addr, 0, sizeof(serv_addr));
    serv_addr.sin_family=AF_INET;
    serv_addr.sin_addr.s_addr=inet_addr(argv[1]);
    serv_addr.sin_port=htons(atoi(argv[2]));
    char* str=inet_ntoa(serv_addr.sin_addr);
    char ptr[30];
    strcpy(ptr, str);
    printf("serv_ip:%s\n", ptr);
    if(connect(clnt_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))==-1)
    error_handling("connect() error!");
    str_len=read(clnt_sock, message, sizeof(message)-1);
    if(str_len==-1)
    error_handling("read() error!");
    printf("Message from server: %s \n", message);
    close(clnt_sock);
    return 0;

}
void error_handling(char* message)
{
    fputs(message,stderr);
    fputc('\n',stderr);
    exit(1);
}

服务端代码:

#include<string.h>
#include<unistd.h>
void error_handling(char* message);
int main(int argc, char* argv[]) 
{
    int serv_sock;
    int clnt_sock;
    struct sockaddr_in serv_addr;
    struct sockaddr_in clnt_addr;
    socklen_t clnt_addr_size;
    char message[]="mizha, love still behind you!";
    if(argc!=2)
      {
        printf("Usage: %s <port>\n",argv[0]);
        exit(1);
      }
    serv_sock=socket(PF_INET, SOCK_STREAM, 0);
    if(serv_sock==-1)
     {
        error_handling("socket() error!");
     }
//  char* serv_ip="192.168.0.235";
    memset(&serv_addr, 0, sizeof(serv_addr));
    serv_addr.sin_family=AF_INET;
    serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    serv_addr.sin_port=htons(atoi(argv[1]));
    //printf("serv_ip:%#x\n", serv_addr.sin_addr.s_addr);
    if(bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))==-1)
      error_handling("bind() error!");
    if(listen(serv_sock,5)==-1)
      error_handling("listen() error!");
    clnt_addr_size=sizeof(clnt_addr);
    clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);
    if(clnt_sock==-1)
      error_handling("accept() error!");
    write(clnt_sock, message, sizeof(message));
    close(clnt_sock);
    close(serv_sock);
    return 0;
}    
void error_handling(char* message)
{
    fputs(message,stderr);
    fputc('\n',stderr);
    exit(1);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

TCP/IP网络编程 学习笔记_1 --网络编程入门

网络编程和套接字 网络编程其实和我们计算机上的文件读取操作很类似,通俗地讲,网络编程就是编写程序使两台联网的计算机相互交换数据。那么,数据具体怎么传输呢?其实操作系统会提供名为“套接字”的部件,套接字...
  • u010223072
  • u010223072
  • 2015年07月06日 09:56
  • 4563

linux程序设计(套接字)+TCP/IP网络编程学习笔记

linux程序设计(套接字)+TCP/IP网络编程学习笔记什么是套接字?应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可...
  • dajiadexiaocao
  • dajiadexiaocao
  • 2016年03月05日 11:32
  • 1724

TCP IP网络编程 (韩)尹圣雨pdf下载

来自图灵社区的优质资源!!! 为初学者准备的网络编程! 韩国TCP/IP经典教程!手把手教你套接字编程! 本书涵盖操作系统、系统编程、TCP/IP协议等多种内容,结构清晰、讲解细致、通俗易懂...
  • wtw1028
  • wtw1028
  • 2015年07月14日 17:06
  • 2675

TCP/IP——网络编程模型

一 socket结构体
  • xiaolangyangyang
  • xiaolangyangyang
  • 2016年05月30日 11:20
  • 775

Linux 系统应用编程——网络编程(TCP/IP 数据包格式解析)

图中括号中的数字代表的是当前域所占的空间大小,单位是bit位。 黄色的是数据链路层的头部,一共14字节 绿色的部分是IP头部,一般是20字节 紫色部分是TCP头部,一般是20字节 ...
  • zqixiao_09
  • zqixiao_09
  • 2016年01月16日 10:01
  • 1216

TCP/IP网络编程之四书五经

TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要。从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架(...
  • xu3737284
  • xu3737284
  • 2013年07月23日 22:31
  • 4318

TCP/IP网络编程之四书五经

TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要。从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架(...
  • weiyuefei
  • weiyuefei
  • 2016年06月18日 22:19
  • 887

Linux网络编程--tcp服务器

一、做为 TCP 服务器需要具备的条件呢? 具备一个可以确知的地址( bind() ):相当于我们要明确知道移动客服的号码,才能给他们电话; 让操作系统知道是一个服务器,而不是客户端( listen(...
  • lianghe_work
  • lianghe_work
  • 2015年06月12日 09:48
  • 1566

玩一下linux网络编程之TCP程序

Windows网络编程和linux网络编程我都玩, 之前的网络编程博文主要是基于Windows的, 后来一些朋友说博文中很少linux网络编程, 好吧, 姑且写一篇来玩一下。 要说明的是, linux...
  • stpeace
  • stpeace
  • 2015年11月07日 21:59
  • 2201

linux网络编程之TCP接口详解

对于linux网络编程基于TCP的API做了详细的描述
  • topgunliu
  • topgunliu
  • 2016年06月26日 17:52
  • 937
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下TCP/IP网络编程
举报原因:
原因补充:

(最多只允许输入30个字)