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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
客户端代码如下:
. B/ I) A5 @8 `0 \9 _
  1. #include
    5 v; ^# y* K2 G
  2. #include% }' u. M1 ~5 T: ~
  3. #include( A. b& \! c# o1 U( Z; r
  4. #include4 i6 X+ j0 O6 _" V" l" \7 t1 d$ G
  5. #include8 K" L& @1 Y+ b- U7 d
  6. #include# U, U2 {. J& M5 C, O. g. z! b: ^! y6 j
  7. #include
    $ A. y& v+ B8 Y  [& L( f* j
  8. #include
复制代码

: B6 k& U! ]/ g# }* M2 \8 J, X- T( X. Z6 n$ j0 `
服务器代码如下:
0 g. S: j2 I* j$ M( ]% r( O  H
  1. #include
    # B5 ^4 ~3 ~& Z. |' a! |
  2. #include' X( R  m5 ?/ R% Y3 G
  3. #include; f4 W  `" O1 Q# A0 A+ T# }
  4. #include
    + l+ E% H1 @* A
  5. #include
    . N1 l' r4 r) w* v0 D  I9 B5 w
  6. #include4 t; V2 d+ O, G) l
  7. #include" z; R6 z% x1 z( X; @3 j
  8. #include
复制代码
6 l/ H) k! C& g
1 F3 s( l2 d6 q
+ F9 B( }! O  n5 Z
8 W1 n+ t9 [& ?! `4 ?7 N# G
2 s7 g; m2 A! S; R# v

- q6 e2 N% @' |5 R+ ^- L3 w# @( A
% b, `1 r) ?9 N, g6 K9 X

0 R( s* ?1 R" ^0 u7 U
; y& H) C0 G2 S0 M5 T
* V. h4 z9 H8 \/ }2 H) h, @
0 n; V) }; D7 d  H; Z
- t" ^3 d! T. ]7 \' q* r* `
4 R7 I5 n1 t7 r% L, r
$ @8 P9 h, j# p5 j

6 R2 e" I1 `  T' L$ d4 P8 d: Z" I

* ^, _' U9 J  K/ \' O
3 O( g! I) \$ b$ ^" v; m
- b: ^! j7 ~& P9 |$ t! J
3 G( w7 \# p& m3 c& a3 m& u) z0 F' ^
1 c- x0 c0 m9 e. S, _! J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
3 ]& T- N1 ]- |0 m- r& E- N. h1 b' ]#include <sys/types.h> 
7 j2 `. t2 a2 P4 A#include <sys/socket.h> 
/ G, }) X& O9 q+ |, h#include <unistd.h> 
- A  C/ R; [: f) ^# l2 p  }#include <netinet/in.h> 
  F4 P3 e1 C9 S#include <arpa/inet.h> , S2 m- V# j; i
#include <string.h> . @5 f( o2 H4 s6 D& V! d1 ~
#include <stdio.h>  0 @, p" a$ d0 P
int main() {
, }. E" Y8 f3 k1 Y0 K8 k        int sockClient;/ \1 H) u; \. {  m# H, ]  y
        struct sockaddr_in addrSrv;
& v) f, x8 r" D3 o1 Q1 i        sockClient = socket(AF_INET,SOCK_DGRAM,0);1 x* b/ g2 q% Y2 L6 h! |+ q
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
: z( [$ ~; Z) [5 Q* ?        addrSrv.sin_family=AF_INET;
8 J5 s7 h$ C! V+ V, G3 g( E7 U        addrSrv.sin_port=htons(6000);
# O/ H* D6 H1 N/ O' p4 ~2 l        while(1)
9 z8 v9 p$ C4 Y; O0 G! z        {1 v" U  |+ V: X8 {0 E$ Q: N2 K2 K
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));! ?" C/ _1 g1 N
                sleep(2);) b4 b3 F1 d' N* ~
        }    
; s: r7 z  n3 X: s! o# u        close(sockClient);  
# u& v- y! ?& M- V1 F        return 0; 
$ p4 A9 y7 a6 n3 A2 w7 G: A7 I}; x5 Q! a  ?  i

. j* x+ N2 s; I) G8 _
5 W9 N: F) c4 x$ |2 w  Y4 Q$ ]$ o客户端:
  1. #include <stdio.h> 
    ( @/ _1 ~; \5 K" X4 I) f
  2. #include <sys/types.h> , s" ^9 H6 f  |; t
  3. #include <sys/socket.h> ' {# B. U4 D$ ]% `; m1 [
  4. #include <netinet/in.h> # A  v. c/ I; K5 M  u* U
  5. #include <arpa/inet.h> * `- H0 G* C8 U/ T* }8 n8 r
  6. #include <string.h> . k- M0 m9 m7 L( D; F& J
  7. #include <unistd.h> ; |, U' x6 d" d5 k5 I7 F, ~
  8. #include <fcntl.h> , N3 N: H& v2 _
  9. #include <sys/time.h> ' j9 ^! P9 l1 ?
  10. #include <sys/select.h> 
    # p8 N2 c0 K3 y! s" z$ ?
  11. #include <sys/ioctl.h>  , J$ L7 m7 H( Y; Q
  12. int main() {
    ) u& t3 w% c; }2 `% |, |
  13.         int sockSrv;
    1 q7 J% \* k8 L1 f
  14.         struct sockaddr_in addrSrv;
    8 O! ?+ Y) H# Z: d! ^4 P
  15.         int len;5 x5 P. z2 a7 P4 [2 r7 M
  16.         char recvBuf[100];
    4 |+ k! b" f, i- @
  17.         scanf("%s",recvBuf);! L! R' ]/ W  M; X1 ]$ h
  18.         struct sockaddr_in addrClient;7 ]+ n* w1 X8 a; ?7 L
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    - ?, ^  K( \( ]5 _! y
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);" {( s6 ]! P# d# B% _, i
  21.         addrSrv.sin_family = AF_INET;
    ) |3 e  C  ~5 V: }6 W( }4 h/ v* E: N
  22.         addrSrv.sin_port = htons(6000);
    1 p2 D% B8 U0 v) T4 c: d/ @
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    2 e, w. M( B$ ^& C0 x9 c" Z
  24.         len = sizeof(struct sockaddr);
    * o2 s$ w7 g  e  v% U' K+ s1 _. _
  25.         memset(recvBuf, 0, 100);0 a0 S4 c; `; w' C+ Z; y* D
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    9 D9 F& Q# o2 R' Q6 S, q  r
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));: \1 h" b7 P$ B4 \3 H5 o& P5 i
  28.         printf("Client data is:%s\n",recvBuf);" [+ J! I, ?, _4 M4 ^6 z$ p
  29.         close(sockSrv);0 }. s; w# M- ^6 t0 b1 t  B  w
  30.         return 0;
    4 B" g  u& b  R7 N( K
  31. } 
复制代码
6 c' X& Q4 T7 o9 B) e9 u4 a. b! c
9 s; C3 |2 P6 ~8 a, g  g& g
* Q. A5 k% {; D: p
/ J2 X% D; h+ _8 k& W8 W# l
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-3 02:19 , Processed in 0.134146 second(s), 19 queries .

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