有人知道我的代码有什么问题吗?
这些是我收录的图书馆:
#include <pthread.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int sockfd;
这是我send
命令的主题:
void *mySend(void* a)
{
cout<<"me too"<<endl;
//this cout is not printed.
char message[100];
while (1)
{
cin>>message;
send(sockfd, message, strlen(message)+1, 0);
}
return NULL;
}
我的主要功能是将此代码连接到服务器,并使用recv
命令从服务器接收。
int main(int argc, char *argv[])
{
cout << "hello" << endl;
//this cout is not printed
int port;
cout << "hello" << endl;
sscanf(argv[3],"%d", & port);
cout << "hello" << endl;
struct sockaddr_in dest_addr;
sockfd = socket(AF_INET,SOCK_STREAM,0);
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(port);
dest_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
memset(&(dest_addr.sin_zero),'\0',8);
int c = connect (sockfd,(struct sockaddr *)&dest_addr,sizeof(structsockaddr));
if (c!=-1)
cout <<"CONNECTED SUCCESSFULLY!"<<endl;
char buffer [20];
pthread_t mammad;
pthread_create (&mammad, NULL,mySend,0);
对于recv
命令。
while(1)
{
recv (sockfd , buffer , strlen(buffer)+1 , 0 );
cout <<"server said :" <<buffer<<endl;
}
close (sockfd);
return 0;
}
在打印任何内容之前,我遇到了分段错误。 我只是想不起来。 帮助!
答案 0 :(得分:3)
如果程序在进入main之前崩溃,则必须是一些崩溃的初始化内容。您应该看看您的全局对象及其构造函数。这样做时请记住,如果全局对象1依赖于已构建的全局对象2,则可能会出现问题。
答案 1 :(得分:3)
您以何种方式提供意见。
如果是
$。/ a.out PORT_NO
然后你会得到segentation.Because因为你使用 argv [3]
如果您为 argv [1] 执行此操作,它肯定会运行
我已经测试过了。
输出如下....
[sharma@localhost ~]$ ./a.out 5000
hello
hello
5000
hello
CONNECTED SUCCESSFULLY!
me too
server said :W
server said :el
server said :com
server said :e to�H*����
server said : TCPServer����
me too
me too
me too
me too
me too
It's a test
server said :No one on that ro
me too
server said :le.No one on that
server said :role. one on that
me too
me too
哦......发送和接收都被破坏了。因为我在循环中使用了你的pthread。