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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:
- g/ Q( ^2 N0 E5 A- C
  1. #include
    ; [- n( L8 w* z' f' G' j
  2. #include
    3 {2 o2 j4 c" f1 H8 Z% }8 _
  3. #include
    " a7 h, A- G$ b3 M! m4 e& L6 ]
  4. #include
    7 l* |# ^: `! f
  5. #include" {* [, W) O2 e
  6. #include
    6 ?, W# K( |7 H
  7. #include! y& o  |- ^( W- C0 s  s# g( L! \
  8. #include
复制代码

# l) _4 ~* s3 F& L6 |% B9 ?1 u5 ~( E4 T+ p
服务器代码如下:
$ j3 v5 @- a1 N7 P; W; p( `
  1. #include1 ^  F" Y! t3 R. E" E6 m: y
  2. #include
    0 V' {8 H! q% x" `4 t; J! R
  3. #include3 ~( ~3 i; J- W
  4. #include/ h5 @9 j2 a+ P0 k1 a0 H- m
  5. #include
    ( O2 \3 w8 c9 n6 d% m
  6. #include+ P: P+ L; ?4 h6 j# _
  7. #include0 F" t8 E+ U- L) P% ~# a, e, T
  8. #include
复制代码
1 N$ K) D1 ~0 B

/ T9 M( r3 K, L! o2 r( P. g
6 B5 r) ?. O6 T
: w; w6 x% I; n0 J$ m3 r

5 N% l  N- y; d3 ?  }7 U
: y$ N; _. H. M; J& h3 r% i

7 {' f* P2 f3 K0 ^+ C4 e
4 q: f7 W$ V# m! t1 L) [
7 I5 K$ Y* u1 U; ]4 H: s: h
9 x1 j* d- W7 n* I9 t, Z

: @3 V& s! l* w! n  j' Z

4 v0 C/ y1 _8 H' v5 [- b
' n- K1 P& z; F

" S, g& o8 T5 [1 J$ N. ?9 E' g2 O

8 r) t) z  B8 Q2 w% A1 ?8 o. m( L' {- H
& G+ a7 c6 N3 a5 R" o

! q+ K2 u- f; Y' {

8 L- I/ F4 U, n" G6 V; ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
7 k7 E) D9 a- y! R. A$ Y#include <sys/types.h> 
$ K/ Y3 D6 Y, c2 I#include <sys/socket.h> ) B; |2 c6 F% `: J) z
#include <unistd.h> 
: n: ^2 ~2 q) m, j0 t' j#include <netinet/in.h> 
: f7 ?  C8 e, e8 r1 c; o+ S#include <arpa/inet.h> 
/ {2 q6 N, v2 o$ ]+ N0 F+ _#include <string.h> , }  v8 i, Z6 s3 }% x
#include <stdio.h>  ; i+ ~3 p+ k+ n  y$ L2 s2 g
int main() {* d0 T+ y0 i6 ^5 F
        int sockClient;$ }; Z2 J+ L4 c0 S/ q3 _- W( M7 p) D9 G
        struct sockaddr_in addrSrv;7 x) C6 r) A: T, s
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
; n3 w% ^; m8 L. p- _% q        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");$ D7 O1 i; I& T  `+ |, H7 A/ ~
        addrSrv.sin_family=AF_INET;# {# x% C! w6 u& {
        addrSrv.sin_port=htons(6000);/ o8 j$ @" `4 Z$ r
        while(1)' `6 {8 V& R3 p1 `" V
        {
- ^1 z% }$ b# `                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
! J- j6 J+ a, p5 h# r                sleep(2);
0 {0 O" _, S8 Q/ B* h; }5 I        }    
  y2 f% l$ ?! P) V6 |        close(sockClient);  # H  z) N  ?$ u
        return 0; 
7 y( S& h& M4 V9 X# v( X' u$ ]}$ W: A; Y# r& b& _# v1 D8 O

" T6 q1 i2 l! L) U- C3 Y" d; u/ H# E
客户端:
  1. #include <stdio.h> . m/ d* f1 _- k
  2. #include <sys/types.h> 
    : g( c: O; j0 \7 J# u0 y+ d
  3. #include <sys/socket.h> 
    ' {3 z) }' x6 U" u' j
  4. #include <netinet/in.h> 
    " m. j4 v& d" g0 q4 W7 k; Y
  5. #include <arpa/inet.h> 
    # I" n7 W* m& c( F, X( N( [
  6. #include <string.h> 7 s7 D# K! P; L: n8 r7 T) j
  7. #include <unistd.h> 3 Z9 s9 y  I  A+ O2 ~
  8. #include <fcntl.h> # \. `& Z6 Y/ x4 O: i
  9. #include <sys/time.h> 
    ) m6 X( }& [/ K0 r. j
  10. #include <sys/select.h> 6 ^3 a  C/ Z; b/ c. ?0 K' a
  11. #include <sys/ioctl.h>  
    3 c$ ]  ~& m4 \/ {) ^! E' r2 A
  12. int main() {
    : g9 k  ^! J, ^4 r0 G
  13.         int sockSrv;* |) J- i. R' ^4 t
  14.         struct sockaddr_in addrSrv;! c# C2 x8 n2 w" N
  15.         int len;% _# x( N; H3 ~% t$ S
  16.         char recvBuf[100];
    ; T9 K: N4 U, c
  17.         scanf("%s",recvBuf);1 i5 T8 X6 \* y& Y
  18.         struct sockaddr_in addrClient;$ ~% X3 [  t5 }+ c3 W  M) k
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);8 l; x! n) H* _4 ]& @! p
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);" z& L3 G1 s- q  ^3 F5 a: c0 c
  21.         addrSrv.sin_family = AF_INET;8 N: z" u2 L0 j$ X" O$ B
  22.         addrSrv.sin_port = htons(6000);. t( n8 o( K3 e3 \
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    , y! M  M. @3 A9 q3 u, R
  24.         len = sizeof(struct sockaddr);
    . U7 b' k9 C* Q) b1 P
  25.         memset(recvBuf, 0, 100);
    ) T* Z% g( H# [" L
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);# h+ ~# G" D2 d+ J/ w, n  R
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    3 C& h: E  c6 _! ^) c5 C
  28.         printf("Client data is:%s\n",recvBuf);6 v$ p( ^5 ^2 M) z2 E
  29.         close(sockSrv);
    + U# `; p6 j# Q1 K- Y* e
  30.         return 0;
    9 X; k0 z( U% h- R  F8 H: c
  31. } 
复制代码
. t& ?1 v; V. k" X
* k0 h: C- `8 ]+ v3 L0 l2 n
$ l: i2 ?. _3 n% k$ [( q
2 o3 c/ {9 ^" L* e7 z& V" L
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-8-4 10:46 , Processed in 0.053674 second(s), 19 queries .

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