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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:  h8 i' N: ^. y1 v$ @
  1. #include* a% d7 ]  B3 c, E
  2. #include
    9 J2 N8 w  x, f) K3 c  D
  3. #include9 W2 A+ h) }, |( m: J7 Z8 l8 Y, V6 N
  4. #include5 a- \4 [3 Z" y2 T
  5. #include3 h, F( f- ^' _3 ]
  6. #include
    ( m, W4 N) A4 {$ c% _3 t
  7. #include
    5 w" k% K7 D7 E3 H' {7 V
  8. #include
复制代码

9 ?( b1 Z8 M$ X. |# F( H& E+ d  ?5 z; `9 [0 R' [6 \
服务器代码如下:/ N# T( [0 m2 s
  1. #include! J7 n4 f, U& D% F4 y
  2. #include
    8 M5 R# i  D" t1 Y
  3. #include- D+ K. _1 l! A; W
  4. #include
    / v' L0 A* y, ]. m" A8 Y
  5. #include
    ' ~0 @9 x- L" N) L9 R
  6. #include$ }6 Y- Z9 ?7 G% _$ L! Q- }5 z
  7. #include# ~- d  l: V) C$ o+ I$ x3 O
  8. #include
复制代码

6 D1 k9 ?1 M! n, w/ V2 [+ F( Z+ W/ T$ E/ K

) t' a4 u. r! K/ ^
7 o. E$ [9 F, i9 }, I/ J
1 Y  i/ n3 w: B2 U. x  e
- Z. b1 m! T3 Q4 B' f) `
, o+ \& {: Y# }% |
+ \! g. Y; l- k5 O/ w* v% E

" P9 z( n8 c, O

  f; P9 v4 W! w) E
$ i6 J" N# }( n+ T* v1 h
  l3 i, Y% `' u
1 ?: ~4 A1 \# M' i6 x

, D: \) T2 ^, ]# @% B8 C$ X
" q$ F# W2 }" X% }
, F' h9 p! ]  v$ W

  z0 h+ J7 x! B5 }$ D' [
9 W( a& B% r4 K2 w& R7 H! [1 j

& R+ W9 g2 J& d6 R- e
4 a+ I+ L  n1 d  ~8 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
( I4 z9 K8 M! p0 \2 [3 V#include <sys/types.h> ; L# c: q) q1 q4 c* J+ _. x
#include <sys/socket.h> 
* G3 d! K# P' N- \3 T#include <unistd.h> 
: X9 A+ ?1 W! x9 C#include <netinet/in.h>   \" j4 h# g1 f+ y5 d( l8 C- n
#include <arpa/inet.h> + P7 g5 i7 B9 t% S2 c8 f% f
#include <string.h> 
0 j! R# E) ^' J. R% h#include <stdio.h>  
0 ?1 u. D8 m& U5 n' Uint main() {
! f, S- v2 E" V- A3 j' G5 \9 Y        int sockClient;  [3 o" C/ H( p( D
        struct sockaddr_in addrSrv;. A  l! {) r  m# @
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
9 G" m$ U% H$ u5 P1 [( p, X        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
5 ?% ^4 C7 u$ T) c! a        addrSrv.sin_family=AF_INET;
$ h8 A: w: S! o: Y        addrSrv.sin_port=htons(6000);
# m3 ]7 u% {- @- Y; [        while(1); m  D# o( w. `- t  \( |% I0 N/ v
        {2 G5 l7 }: f, Z, s$ b$ U
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));6 K% M0 j& t" s0 R/ C# Q
                sleep(2);
+ \1 e# b# Q7 R1 H1 j        }    . X* Q* H  t6 J$ x
        close(sockClient);  
* R; q# @+ q0 U$ [; ]$ [        return 0; 0 l' f) [% f; O& c
}2 a9 ^( ?5 E- Z7 \4 }$ V0 Y6 c
8 t( q7 _3 {! g/ e

0 U- d4 Q  q+ i客户端:
  1. #include <stdio.h> - V) g8 Q6 q6 `, `- n% U
  2. #include <sys/types.h> 
    % `( G8 C( P, R
  3. #include <sys/socket.h> 
    " u& P$ I, P4 [' l5 A
  4. #include <netinet/in.h> 2 T/ u. N- ?/ k
  5. #include <arpa/inet.h> , |  |; Y* \/ A; h) J6 j  V- l+ _  w
  6. #include <string.h>   N8 J9 i: k1 \4 k% \6 V
  7. #include <unistd.h> / y/ `3 J' x- c' t& X0 @, L, t$ J# A
  8. #include <fcntl.h> 
    9 `& Q1 K; T2 p6 U1 ~
  9. #include <sys/time.h> 
    + _9 s/ o; z$ F6 A. H& G3 Y( j8 ~7 f0 w
  10. #include <sys/select.h> 
    $ y3 d" N1 q  J' [5 v  Z% ^2 h* A
  11. #include <sys/ioctl.h>  : h; M4 o+ W, ^
  12. int main() {
    1 X, q1 S0 D9 o* f! L! b
  13.         int sockSrv;* r# f! l' \* Y3 s: Q
  14.         struct sockaddr_in addrSrv;; d7 m, p  u9 j5 y2 t8 R: s. ^
  15.         int len;& {3 {9 U& I0 b- ?
  16.         char recvBuf[100];
    , f5 m* `( y; Z, d1 B% O% O
  17.         scanf("%s",recvBuf);$ K- [8 @  o$ _8 q# Q* `; M( f; n
  18.         struct sockaddr_in addrClient;2 H% G( a* q1 V9 M+ Q
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ) b) r( i, N8 J2 ?
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);& b3 Y1 y6 Z- |7 W8 F) A4 b
  21.         addrSrv.sin_family = AF_INET;* g, G4 v8 q& Y( P/ M6 a
  22.         addrSrv.sin_port = htons(6000);
    * G/ J& y1 E% @( g" `# r( }, B
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));3 A( q$ Y) L5 G6 l- A
  24.         len = sizeof(struct sockaddr);% X4 _3 r8 I& A+ d
  25.         memset(recvBuf, 0, 100);' k: q! J: e- C* S9 A  _4 K
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);: P# e; q9 C( i
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    , o5 U7 D' A) M- ]% l/ K/ f; `9 l' o
  28.         printf("Client data is:%s\n",recvBuf);  i0 I. I+ E: f  G2 g0 M; t
  29.         close(sockSrv);" |! p" H, {: f3 o9 ^  D
  30.         return 0;- D/ y  R! @8 Z5 u
  31. } 
复制代码

5 o' W8 Q, f9 R& A: B6 c9 S7 H% k6 B' t% S( e) G
1 s& z+ g# w& g/ q' Y# X

/ o$ X& N5 I% v
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-19 22:59 , Processed in 0.116700 second(s), 18 queries .

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