求一C语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释

求一C语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释,第1张

最简单的那种?我给你写一个=,=

//服务器

#include <sys/stat.h>

#include <fcntl.h>

#include <errno.h>

#include <netdb.h>

#include <sys/types.h>

#include <sys/socket.h>雹戚

#include <netinet/in.h>

#include <arpa/inet.h>

#include <string.h>

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

main()

{

//创建套接字

int serverSocket= socket(AF_INET,SOCK_STREAM,0)

struct sockaddr_in server_addr

struct sockaddr_in clientAddr

int addr_len = sizeof(clientAddr)

int client

char buffer[200]

//创建地址

bzero(&server_addr,sizeof(server_addr))

server_addr.sin_family =AF_INET

server_addr.sin_port = htons(5555)

server_addr.sin_addr.s_addr = htonl(INADDR_ANY)

//绑定

bind(serverSocket,(struct sockaddr *)&server_addr,sizeof(server_addr))

//帧听

listen(serverSocket,5)

printf("客户端发过来的 :\n")

/源悉陵/接收

client=accept(serverSocket,(sockaddr *)&clientAddr,(socklen_t*)&addr_len)

printf("客户端发过来的 :\n")

while(1)

{

if(recv(client,buffer,sizeof(buffer),0)>0)

printf("客户端发过来的 : %s\n",buffer)

}

return 0

}

//客户端

#include <sys/stat.h>

#include <fcntl.h>

#include <errno.h>

#include <netdb.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <string.h>

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

main()

{

struct sockaddr_in serverAddr

int clientSocket=socket(AF_INET,SOCK_STREAM,0)

char sendbuf[200]

//创建地址信息

serverAddr.sin_family=AF_INET

serverAddr.sin_port=htons(5555)

serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1")

//连接服务器

connect(clientSocket,(sockaddr*)&serverAddr,sizeof(serverAddr))

printf("连接目标主机中.....\n连接完成......\n")

//

while(1)

{

printf("请输入发给服务器的数据 : ")

scanf("陆漏%s",sendbuf)

//strcmp函数作用,比较两个东东(按ASCII值大小相比较),相同就==0。

if(strcmp(sendbuf,"x")==0)

break

send(clientSocket,sendbuf,sizeof(sendbuf),0)

}

close(clientSocket)

return 0

}

其实发牌问题里有个随机的问题,就是模拟洗牌的问题,我来尝试下这个程序吧(每个花色的代码分别是:红桃 \x3,方块\x4,梅花\x5,黑桃\x6

#include <stdio.h>

#include <time.h>

char hua_se[4]={'\x3','\x4','\x5','\x6'} //定义一个数组来存放花色

char *dight[14]={"Ace","two","three","four","中毁搜five","six","seven","eight","nine","ten","jack","queen","king"}/余悔/定义一个指针型的数组来存放数字

int fa_pai[4][13]={0}//定义一个二维数组来发牌

void move(int fa_pai[4][13])

void deal(int fa_pai[4][13],char huase[4],char *dight[4][13])

int main(void){srand(time(NULL))

move(fa_pai)

deal(hua_se,dight,fa_pai)

printf("你是否卖历想结束发牌?Y/N")

getch()return 0}void move(int fa_pai[4][13]){int r,card,row,column

for(card=1card<=52card++)

{

r=rand()

row=r%4

r=rand()

column=r%13

while(fa_pai[4][13]!=0)

{

r=rand()

row=r%4

r=rand()

column=r%13

}

fa_pai[row][column]=card

}

}

void deal(int fapai[4][13],char hua_se[3],char *dight[13])

{

char cint card,row,column

for(card=1card<=52card++)

{

for(row=0row<=3row++)

{

for(column=0column<=12column++)

{

if(fapai[row][column]==card)

{

if(card%3=0)c='\n'

elsec='\t'

printf("%5sof%-8s%c",hua_se[row],dight[column],c)

}

}

}

}

}

import java.awt.*// 导入相应的awt工具组件

import java.awt.event.*// 导入awt工具组件的事件类

/**

* 作用:calc类用于演示加法计算器的功能<p>

* @author 网络用户

* @version 1.0 2009-6-3

* @since JDK 1.5

*/

class calc extends WindowAdapter implements ActionListener

{

//以下声明相关变量

Frame f //窗口

// Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9

Button b[] = new Button[10] //10个按钮,分缓山别对应数字0到9

Button be, badd, bc //bc为=,badd为+,bc为归0按钮

TextField answer //文本框answer用于显示相加的结果

Panel p //面板

String s = "" //临时变量,用于记住被加数

int t1, t2 //t1,t2分别表示被加数,加数

/**

* 作用:main方激哪悉法为程序运行的入口

* @param args

*/

public static void main( String args[] )

{

calc cg = new calc() //创建一个calc类的对象

cg.go() //调用go方法,显示加法器界面,并完成加法功能

}

/**

* 作用:go()方法用于显示加法器界面,并完成加法功能

*/

public void go()

{

p = new Panel() //创建面板的对象,10个按钮将在此面板对象上添加和显示

answer = new TextField("0", 15) //设置文本框的默认值为0,文本框的长度15个字符

b[0] = new Button("0") //以下就是那10个按钮,按钮上的文本就是0到9的数字

b[1] = new Button("1")

b[2] = new Button("2")

b[3] = new Button("3")

b[4] = new Button("4")

b[5] = new Button("5")

b[6] = new Button("6")

b[7] = new Button("7")

b[8] = new Button("8")

b[9] = new Button("9")

be = new Button("=") //等号

badd = new Button("+") //加号

bc = new Button("C") //归0按钮

p.setLayout(new GridLayout(4, 3)) //将面板设置为4行3列,即12个格子,刚好可以存放地10个数字按钮另加+号按钮和=号按钮,共12个按钮

p.add(b[7]) //添加10个数字按钮到面板上

p.add(b[8])

p.add(b[9])

p.add(b[4])

p.add(b[5])

p.add(b[6])

p.add(b[1])

p.add(b[2])

p.add(b[3])

p.add(b[0])

for( int i = 0i <b.lengthi++ )

b[i].addActionListener(this) //为10个数字按钮添加事件监听器,以用于实现加法功能

p.add(be) //添加=号按钮到面板上

p.add(badd)//添加+号按明乎钮到面板上

be.addActionListener(this) //为=号按钮添加事件监听器,用于实现加法功能

badd.addActionListener(this)//为+号按钮添加事件监听器,用于实现加法功能

f = new Frame("calc") //创建一个Frame对象(窗口),窗口的标题就是calc

f.setSize(300, 300)//窗口的大小为300*300像素

f.add(answer, "North") //将文本框设置在窗口的北部(上),窗口的默认布局为BorderLayout,即东西南北中5个位置

f.add(p, "Center") //将面板设置在窗口的中部(中)

f.add(bc, "South") //将归0按钮设置在窗口的南部(下)

bc.addActionListener(this) //为归0按钮添加事件监听器,用于将计算结果归0

f.addWindowListener(this) //为窗口添加事件监听器,用于实现关闭窗口的功能

f.pack() //此方法用于窗口到合适的大小

f.setVisible(true) //显示窗口,为false时将不会显示窗口

}

//在10个数字按钮和3个功能按钮上单击,将触发此方法

public void actionPerformed( ActionEvent e )

{

if( e.getSource() == bc )

{//单击了归0按钮,设置为默认值

s = ""

t1 = 0//被加数设0

t2 = 0//加数设0

answer.setText("0") //文本框设为0

} else if( e.getSource() == badd )

{//单击+号按钮

t1 = Integer.parseInt(s) //记下被加数

s = ""

} else if( e.getSource() == be )

{//单击=号按钮

t2 = Integer.parseInt(s) //记下加数

t2 = t2 + t1 //把被加数与加数相加

answer.setText((new Integer(t2)).toString()) //在文本框上显示相加的结果

} else

{//单击0到9之间的任意一个数字按钮

for( int i = 0i <b.lengthi++ )

if( e.getSource() == b[i] )

{

System.out.println("1")

s = s + b[i].getActionCommand() //获得被单击按钮上的数字

answer.setText(s) //在文本框上显示连续单击那几个数字

}

}

}

//关闭窗口,触发此方法

public void windowClosing( WindowEvent ev )

{

System.exit(0) //退出程序

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12311968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存