您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14283|回复: 1
打印 上一主题 下一主题

[C] C语言学习之Linux下TCP服务器与客户端的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:$ y  H  w9 \9 Y$ \5 _8 ^, I* X+ Z
  1. #include
    % v' d& s' p6 ^1 `! ?( k) |
  2. #include4 U7 l8 G6 a+ @5 `  |* t+ U
  3. #include+ A2 O( A2 i8 q' l7 W
  4. #include* u  O/ a+ \8 G9 Q  ]
  5. #include7 f, d$ Z7 D5 |
  6. #include
    , d# [& N: P( W8 G5 V* V4 O
  7. #include
    & Y4 q. A7 \" `! o
  8. #include
复制代码

. d+ i3 [( J  V9 W$ R
, N# h1 ^0 a* F* {; Q: B服务器代码如下:- U! g& i6 S# g) ?, X/ J
  1. #include
    " i" n4 |9 U0 y& v0 Q7 E. g
  2. #include( m; |" F9 f! k! A8 d8 [
  3. #include  q; p4 H  N4 x' z$ _" C
  4. #include
    1 u$ v; B. w. n% u+ v# W
  5. #include
    % `" l/ F# ^6 B! J' A* q
  6. #include8 {( v2 z1 J) r
  7. #include
      S0 |3 S' z/ b" P( H
  8. #include
复制代码
8 U* o- l+ t1 N* v

- n7 u  J0 T. U1 U3 \) _  i
* t5 m0 E& t7 X. W
' G" A; P5 B9 O* A0 y
- G% F, ~1 U2 o2 E5 G, F4 L

0 D  ~5 r. d" Q7 R" R# O" F. @
. H$ p; \: N  U4 d
0 R! L0 \2 q; X: L/ Z8 U

- z1 y; B/ Z7 M8 y5 W; B3 @5 O

2 c7 {9 i, o" e5 @* \( A, Y
  N; U1 b5 Q4 I4 X7 W1 T
. n' _: I3 d# I' L5 |1 n" W

( M9 n; A5 I9 v! L8 m! e

8 V2 D* o! j: T! t- I! F% R& ]4 k* J* q/ p  b! R' H; {
2 w5 @# p; u5 F  M. g' [3 C! N) L
: g. ^3 g( o( z
8 V5 a! r, w7 H% |4 n+ H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
- l2 }% I+ @0 A3 T. s% a$ M# {# s#include <sys/types.h> ( a' k* A% }8 t) C4 A* b7 m
#include <sys/socket.h> 
/ l3 L9 `4 Y/ q$ |& n& M#include <unistd.h> - H: {9 H9 {8 F/ u4 W
#include <netinet/in.h> " l+ J2 D) Q' [; J' R
#include <arpa/inet.h> ! z- W+ X. ]8 n4 H
#include <string.h> . r) l3 e9 F2 f+ Y0 i) X
#include <stdio.h>  " |2 z9 o$ }- C0 b0 e$ g; E) }0 p5 f
int main() {7 {8 K1 O6 \: a% U7 z
        int sockClient;7 `6 b5 s3 E# V# F, F
        struct sockaddr_in addrSrv;
1 p% N1 Q* K' ^6 _" b        sockClient = socket(AF_INET,SOCK_DGRAM,0);
) a( u) h5 o: Z/ o( `7 ]        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");0 X- `, e1 v, M" e/ \$ E# l
        addrSrv.sin_family=AF_INET;
- Y9 r# E( k( O        addrSrv.sin_port=htons(6000);' X3 y" n7 e  w0 t% i
        while(1)5 n" r8 S9 w1 Q& ^  {0 ~
        {$ g$ F* O" [) G' _
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));( k" J& H4 G4 e; h9 _# B
                sleep(2);
/ W  l5 h4 i$ T6 `. j        }    ) [- k9 K" z& E$ @& N! ?3 j
        close(sockClient);  6 W& p' A  U! x. ]) `0 M& v
        return 0; 
9 t9 u4 r+ a$ i}
4 a# j) d; ^7 q3 R$ S
' ]/ X9 C2 g2 Y* t& q- C8 |5 I) t  h
0 B' V3 s9 R0 s客户端:
  1. #include <stdio.h>   Z4 U* n; M  Y9 j+ |
  2. #include <sys/types.h> ) ~' z) j9 G. Z' R: K( R9 q: Z. }& r
  3. #include <sys/socket.h> 2 p6 H& J) n) i2 I4 z; Z7 }" [
  4. #include <netinet/in.h> ! E' o5 P$ R  r3 r1 C( b! M+ E% @
  5. #include <arpa/inet.h> / y. Z$ N" I2 _; d
  6. #include <string.h> 
    0 s/ k! v9 O3 a2 m
  7. #include <unistd.h> 
    , {+ j# r' Q% F
  8. #include <fcntl.h> 4 b, L6 l, j6 @/ b% p" c: a
  9. #include <sys/time.h> # v% D. Q7 J! Z$ E# w4 S
  10. #include <sys/select.h> 3 ^! e1 ~0 ?( M# d* q3 Y
  11. #include <sys/ioctl.h>  ( p7 M5 E+ N+ k1 h
  12. int main() {* s2 j! E4 p6 A* h- k; P, w/ T
  13.         int sockSrv;
    ! s& i! k8 R3 S* q3 X" K
  14.         struct sockaddr_in addrSrv;
    0 D, B0 E! Q6 }3 e; X* M6 ?$ d
  15.         int len;% D- {: c8 @7 R- s# p) v
  16.         char recvBuf[100];
    4 F4 ?) ~2 H/ g9 j0 ?) F' q0 x
  17.         scanf("%s",recvBuf);
    . {+ Z# v! r9 H" N; y# t
  18.         struct sockaddr_in addrClient;8 X* c& l+ @2 Q( E9 S
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    8 ~4 A$ {& y- {. I3 ^5 U* p! o
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);! j( Q( y3 v1 ~) j+ b" y8 U8 Z3 |
  21.         addrSrv.sin_family = AF_INET;1 C$ o; I+ U3 ]6 \) G" W. ~" G! O
  22.         addrSrv.sin_port = htons(6000);2 X2 ~' k) B/ E& u2 {9 i4 ~
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    ; K" Y2 F, r6 D& C2 a- t
  24.         len = sizeof(struct sockaddr);
    " _$ |9 m2 ~: P3 u
  25.         memset(recvBuf, 0, 100);! y1 D  @) B* I( L* |
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    4 I& i, n5 P# j& @7 `
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));7 j  G& X2 f3 z9 u
  28.         printf("Client data is:%s\n",recvBuf);
    % P& E' u) q- f. ]3 N. t
  29.         close(sockSrv);$ R. h; E7 ~9 N) S: z7 a
  30.         return 0;
    5 s# @, g; j7 B7 |
  31. } 
复制代码

/ B6 T, s& _" z$ T
3 d: B$ p; i7 e
( I3 P- _$ r5 v3 |" y
3 Y; v! b2 u, j' o, @
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 00:53 , Processed in 0.065226 second(s), 18 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!