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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
: }' U4 Y& `3 a+ g; x
  1. #include. l, q- h8 ^, h/ i5 k/ `! U8 ]
  2. #include) y6 {4 {+ v. G
  3. #include
    ; i3 U: N3 O4 ^/ H$ u7 y& W
  4. #include, }) G+ K% ]1 [6 L5 B
  5. #include
      r  i3 s( L) p/ G7 y. R
  6. #include/ O3 q2 N. j+ Z- C
  7. #include/ c4 A. y7 k$ `4 Y# k
  8. #include
复制代码
- p" e( F8 D( D4 ?5 q. z! \

' H3 K9 f6 ?6 M7 i. p服务器代码如下:
* s0 P  }  P0 S$ u& Y, l: ?
  1. #include( E% i7 Y9 Q; s- D( B+ C! T
  2. #include
    7 z' @+ M& E1 i% r2 g
  3. #include& x$ f8 e% h" h; d& z; D
  4. #include, S# S' S( X- _
  5. #include
    $ I2 [' H+ w: a# Q+ v
  6. #include7 y: O2 `4 C" n: H; ~' y
  7. #include
    . H- M1 f# R5 [! `
  8. #include
复制代码
- K' o5 a: C: Q+ E- s$ A" h% ]
% x7 M, M7 S1 B/ e4 I) s

4 [. L9 E" V! Q5 O1 E$ V$ k5 g
" Z% l# l$ f" F4 ^5 @1 {8 ]

1 E1 j5 V3 o, G

  H8 ~% s! S( O& ?( a$ L5 l$ g7 Z7 ~% T

1 b; p( k7 B9 l# |0 u' |
! ~  f. z, k% S. S8 c& t9 M

7 d; [" }; R  l9 ?4 j1 U. o
# K+ c5 H: ^1 L4 l0 C+ h

" l( A# \: B1 ]
% ?6 h! s" X, o1 O# {0 H
, Z* {1 B) T& g) P( z

6 q9 t# D, J7 e4 g& t% F

, J* j& V- \& X3 Y& E" y( h( ?/ o: P( i2 X* w- X

1 O9 Y8 K$ J8 C8 O( O& j3 _' l- H+ T/ _- O
: Y+ j9 k& ]3 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
2 R; o8 {% s1 X+ ]3 V#include <sys/types.h> 
$ _9 u* T1 P0 e2 ~8 c, ?- T#include <sys/socket.h> 
6 ]( \9 F0 m# d2 z, e#include <unistd.h> 3 o# d, _! _. _6 u+ d
#include <netinet/in.h> " \* J8 D7 y: s  B; _' T: }2 ^1 B
#include <arpa/inet.h> 
( ~  I: s$ c3 h, P- ^5 B#include <string.h> 
& |, x# w% a+ j. u! V#include <stdio.h>  / U2 w$ O8 B, D# u5 @
int main() {4 @- l  T) Z8 p% B; ?
        int sockClient;4 T1 b9 E5 O% G. b5 P  u
        struct sockaddr_in addrSrv;, T: i, K: ?2 _- m/ s
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
8 \; k: r# Z4 H- v+ |        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");5 K- `, ^# s: K, d8 C+ V
        addrSrv.sin_family=AF_INET;* T% W2 u8 U# N! U% K  A
        addrSrv.sin_port=htons(6000);8 @9 x+ q; X/ x4 N$ j
        while(1)  \* \. \0 |9 Z1 ^3 E4 t$ z
        {
; b/ D9 C- V( B4 w! i- q. m                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));9 ?/ u& H. S; ~- K9 Q' M! {' j8 e
                sleep(2);
* [& D' l, b0 v" k" x1 |        }    
' J* }/ v& C/ R; ]' L        close(sockClient);  ( P; N& L$ p5 g/ W
        return 0; 
+ K+ q+ u' b+ e* A$ G/ D# @0 E/ ~}
; [# ^. d0 |' }( [3 a  e  Q$ ^( B
7 P" o: o- B4 }. d. R+ M
8 V4 K  j/ w) ^客户端:
  1. #include <stdio.h> 
    4 T8 u5 E" _* P" Y3 }+ j
  2. #include <sys/types.h> ( z- {* F0 J2 `' `
  3. #include <sys/socket.h>   V( J% n. n- l2 `0 r
  4. #include <netinet/in.h> 
    1 d' r' ^  s$ b, I9 U  }* a
  5. #include <arpa/inet.h> 
    # R9 ^/ s, ~5 `  \- y" c, J5 j
  6. #include <string.h> 
    8 ]( w9 H3 v7 f; U& t
  7. #include <unistd.h> & [. t/ V5 M% j* F" Q5 j/ v7 G
  8. #include <fcntl.h> 
    - F! v; e, Q+ v/ z5 h5 ?
  9. #include <sys/time.h> ! S' Q! u9 g. S
  10. #include <sys/select.h> 
    : P4 a& I* H  p/ L6 l" Q
  11. #include <sys/ioctl.h>  % J. V& f8 L& i* }7 p" ~1 I
  12. int main() {' I  I# e, I9 K& h/ O& R; Y7 y
  13.         int sockSrv;
    + d. |6 \# N$ {- b% O# W
  14.         struct sockaddr_in addrSrv;
    7 \9 g6 {) w5 ?2 V
  15.         int len;
    ! Q. m. H3 e8 P  ^' k* ~' e; t
  16.         char recvBuf[100];! q8 x9 S  Z) v1 m3 j8 `
  17.         scanf("%s",recvBuf);) {' d. C% L1 |4 n% Y
  18.         struct sockaddr_in addrClient;1 ^7 G- U5 X* E: H0 z
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    5 _6 z- K# u' U6 h5 q8 m
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);% Z) J5 B' m' S/ S( Q; R% P* F
  21.         addrSrv.sin_family = AF_INET;! v4 x  W& d) q  I) J
  22.         addrSrv.sin_port = htons(6000);3 c1 ^* e' E5 L+ M
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    , ^4 {1 o+ W6 m8 z
  24.         len = sizeof(struct sockaddr);
    0 s6 m$ k' h" o8 e7 m
  25.         memset(recvBuf, 0, 100);$ N% w( m% A* _" X* Y
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    $ Q1 ~! `* P: m4 W0 c
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));; [! c/ e8 ^4 p' G9 A" q
  28.         printf("Client data is:%s\n",recvBuf);4 j6 n+ R+ S, [. X  Z0 W0 h& W
  29.         close(sockSrv);* _; M+ B- L- o" Q  o& t
  30.         return 0;) _: ^- A: I- {
  31. } 
复制代码
7 \# h  d+ p1 ?) I! k% c: I2 C; c
; n+ X9 S# c$ r  n  g

2 Q  U3 \+ ?& I. Z
& T9 b, K7 |3 f! n4 h! k7 Y
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-6-20 01:54 , Processed in 0.055253 second(s), 19 queries .

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