linux下,socket服务器和客户端TCP方式建立了连接,如何使它们之间相互发送消息?

linux下,socket服务器和客户端TCP方式建立了连接,如何使它们之间相互发送消息?,第1张

1可能是在获取客户端的ip和端口时,处理出现问题,导致无法正确发送到客户端。

2客户端是否使用固定的端口来接收服务器信息,或服务器是否正确发送到客户端的相应的端口。

3通过上面分析,最大可能是在处理端口出现问题,请重新检查。

4实在不行,最好使用抛出异常方法来捕获错误消息,或是通过一步一步调试分析数据发送过程。

通过SecureCRT作为客户端连接Linux服务器的方法。

步骤1:确认Linux服务器sshd服务已经启动

通过输入命令:service sshd status命令来查看

步骤2:下载SecureCRT工具

百度上输入securecrt,搜索第一个就是官方下载,选择“普通下载”

步骤3:配置SecureCRT

1、双击"SecureCRTexe"程序

2、第一次运行SecureCRT,需要设置SecureCRT配置文件的文件夹,点击“确定”选择它默认的文件夹

3、连接界面中,点击”新建会话“按钮,弹出右边会话框,选择”SSH2"协议

4、填写好Linux服务器的主机名、端口、防火墙、用户名,点击“下一步”

5、填写“会话名称”,单击“完成”

步骤4:通过SecureCRT连接Linux服务器

1、选择刚刚建好的会话,点击"连接"按钮

2、新建主机密钥界面,选择"接受并保存"按钮

3、输入安全外壳密码,点击"确定"

解决办法:

1在客户端n=read(socketfd,buff,1023);代码之前加上memset(buff,0,sizeof(buff));,这是保证收到较短数据(使用TCP你不能保证每次接收的数据和发送的数据时等长的),打印也是正确的;

2将客户端buff[n+1]+='\0';修改为buff[n]='\0';,这是因为n是下标,已经是最后一个位置了;

3将服务器端buff[n+1]+='\0';修改为buff[n]='\0';,这是因为n是下标,已经是最后一个位置了,而且和第2)一样,那个加号也要去掉,应该是笔误吧;

4最大的问题,将服务器端write(connectfd,buff,1023);,你怎么能够保证收到1023个字符呢?也应该将while中条件移出作为WHILE中的一条语句,而且加上前面所述的memset语句,而将这里的write(connectfd,buff,1023);修改为write(connectfd,buff,strlen(buff))。

祝共同进步!

你的使用场景是什么?在shell环境还是其它?

如果客户端可以使用ssh登陆服务器,可以直接使用scp命令拷贝文件。

scp SrcFileName username@ServerIP:/path/newName

如果服务器sshd端口不是22,需要使用-P port指定端口

如果是目录,需要加选项-r

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux下,socket服务器和客户端TCP方式建立了连接,如何使它们之间相互发送消息?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情